如何迭代面板的所有组件,除了一个

时间:2014-12-07 10:34:49

标签: java swing

我对java / swing有疑问。 我已经构建了一个带有一些JTextFields和JComboBox的输入表单。

我有两个按钮。保存并中止。 如果单击“保存”,则检查所有输入字段。因此,如果您错过了一个字段,则会出现错误。

哪种方法正常。

On Abort我想要两个案例。第一种情况是,如果字段中的某些内容发生更改,则会出现一个问题“您真的要关闭吗?数据丢失blabla”的JOptionPane。

但是如果没有输入,它应该在没有这个消息的情况下关闭。

要检查某些内容是否已更改,我有:

   private boolean isFormularChanged() {
    boolean isChanged = false;
    for (Component c : WeinDatenPanel.getComponents()){
        if (!isChanged && c instanceof JTextField) {
            isChanged = !((JTextField) c).getText().isEmpty();
        } else if (!isChanged && c instanceof JComboBox) {
            isChanged = isComboBoxChanged;
        }
    }   
    return isChanged;
}

问题是,我的第一个JTextField有一个MaskFormatter和Placeholders。所以.getText()。isEmpty()不适用于这个字段。因为这个原因,isChanged总是如此。

我可以在没有MaskFormatter字段的情况下以某种方式迭代所有字段吗? 一个丑陋的解决方案是手工完成这个并且用手检查我的所有字段,然后执行我的第一个字段。但也许是另一个更清洁的解决方案?

0 个答案:

没有答案