有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java:从JTextField获取用户输入

目前,我正在使用以下代码向用户显示一个文本字段,并从用户检索输入

public void getInputFromUser ()
{

    String input = null;
    JTextField textField = new JTextField();
    textField.setColumns(50);

    textField.setVisible(true);


    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    frame.setSize(300, 75);
    frame.add(textField);
    frame.setVisible(true);
    frame.requestFocus();
    frame.addWindowListener(null);


    textField.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent ae){

              String text = textField.getText();

              System.out.println(text);
           }
        });

这个很好用。然而,问题是:

•我希望能够在用户关闭对话框时获得输入,就像在用户点击enter键时一样

•我想停止程序的执行,直到用户输入内容并关闭对话框。现在,即使在用户在对话框/文本框中输入任何内容之前,程序仍将继续运行


共 (1) 个答案

  1. # 1 楼答案

    我知道一个简单的方法,你怎么做。当我需要制作类似的东西时,我总是使用JDialog。如果将JDialog设置为modal,那么如果JDialog可见,它将停止程序的执行。我在下面更新了您的代码:

     public void getInputFromUser ()
     {
        String input = null;
        JTextField textField = new JTextField("sadsadasd");
        textField.setColumns(50);
    
        textField.setVisible(true);
    
        JDialog jd = new JDialog();
        jd.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        jd.setSize(300, 75);
        jd.add(textField);
        jd.requestFocus();
        jd.setModal(true);
        jd.setVisible(true);
        System.out.println("I am here");
    
        textField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
    
                String text = textField.getText();
    
                System.out.println(text);
            }
        });
    }