【问题标题】:How to issue a warning if required text field is empty?如果必填文本字段为空,如何发出警告?
【发布时间】:2013-04-13 12:56:53
【问题描述】:

我正在尝试制作一个可执行的 JButton(打开一个新窗口)单选按钮被选中,并且文本文件被填充在特定范围内(文本字段应该是从 1800 到 2013)。对于单选按钮,我现在做了一个默认选择,但我不知道如何返回一个应该填写文本字段的警告(一个介于 1800 和 2013 之间的数字),如果它在那里,那么它运行程序。

编辑: 所以如果我的代码是:

JFrame ....
JPanel ....

JTextField txt = new JTextField();
JButton button = new JButton("run");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//Do things here
}
});
txt.addFocusListener(new FocusListener() {
      ....
}

如何使用ItemStateListener。我应该定义一个听众,然后呢?

【问题讨论】:

  • 当按钮被点击时(在它的actionPerformed 方法中),你可以检查范围并使用JOptionPane 来判断值是否超出范围。您可以使用ChangeListenerItemStateListener 来监控单选按钮的变化,并且只有在游侠在可接受的范围内时才启用JButton
  • 您的问题能否表述为“如果必填文本字段为空,如何发出警告?”?如果是这样,请将其添加为edit to the question。如果没有,请形成一个问题并做同样的事情。
  • "文本字段应填写(1800 到 2013 之间的数字)" 对于数值,请改用 JSpinner
  • 我建议您看看这个精彩的答案,@DavidKroukamp 的Drawing warning symbols during form validation in Swing,您可能会对这个主题感兴趣
  • 这个关于allow introducting digits in JTextField 的答案又是一个值得关注的好话题。更多信息可以在与implementing Document Listeners 相关的 Java 文档中找到:-)

标签: java swing user-interface jbutton


【解决方案1】:
public void actionPerformed(ActionEvent e)  
{  
    String s = txt.getText();  
    char[] cArr = s.toCharAray();  
    ArrayList<Character> chars = new ArrayList<Character>();  
    for (char c : cArr)  
        if (c.isDigit())  
            chars.add(c);  
    cArr = new char[chars.size()];  
    for (int i = 0;i<chars.size();i++)  
        cArr[i] = char.get(i);  
    s = new String(cArr);  
    txtField.setText(s);  
    if (s.equals(""))  
    {  
        // issue warning  
        return;  
    }  
    int input = Integer.parseInt(s);  
    if (input >=  1800 && input <= 2013)  
    {  
        // do stuff  
    }  
}  

基本上,读取文本字段中的字符串,从中删除所有非数字字符,只有在指定范围内时才继续。

【讨论】:

  • 我最关心的是条件按钮。如何将文本字段的条件(无论是否满足条件)传递给为按钮设计的动作侦听器?
  • 如果 TextField 是全局可访问的(它应该是),那么您可以使用 txt.getText(); 访问它包含的文本;只需使用我上面发布的代码来检查它是否满足条件。
  • pastebin.com/QU0JxmCN这个方法会检查文本是否满足条件。
猜你喜欢
  • 1970-01-01
  • 2012-09-27
  • 2023-01-23
  • 2023-04-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多