【问题标题】:Java: Get User Input from JTextFieldJava:从 JTextField 获取用户输入
【发布时间】:2015-09-04 20:01:46
【问题描述】:

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

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);
           }
        });

这很好用。但是问题是:

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

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

【问题讨论】:

  • 这对于大多数对话来说听起来并不直观。但是您要阻止它们的是模态类型的窗口。也许this 会有所帮助。
  • 考虑使用JOptionPane.showInputDialog(..) 代替框架。它似乎很好地满足了这种需求。另请参阅The Use of Multiple JFrames, Good/Bad Practice?

标签: java swing jtextfield


【解决方案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);
        }
    });
}

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2019-07-05
    相关资源
    最近更新 更多