我对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字段的情况下以某种方式迭代所有字段吗? 一个丑陋的解决方案是手工完成这个并且用手检查我的所有字段,然后执行我的第一个字段。但也许是另一个更清洁的解决方案?