我正在使用JFormattedTextField
for 来格式化 Swing 应用程序的整数输入。无效输入的默认行为是悄悄地(即没有错误消息)将文本字段重置为其先前的值。我想JOptionPane
在将焦点返回到JFormattedTextField
.
FocusListener
我最初的解决方案是为我的文本字段实现s 。我考虑为每个实例添加相同FocusListener
子类的实例,但由于我使用的是 NetBeans GUI Builder,因此遇到了问题。@HovercraftFullOfEels 建议我使用InputVerifier
. 我已经实现了以下自定义 InputVerifier:
public class ValidTextFormatInputVerifier extends InputVerifier {
@Override
public boolean verify(JComponent jc) {
return ((JFormattedTextField)jc).isEditValid();
}
}
JFormattedTextField
在进一步研究这一点时,我得到了内部使用的印象InputVerifier
。(不过,我还没有在任何地方发现这一点。)因此,我的习惯InputVerifier
似乎是多余的。
更大的问题是文本字段仍然静默重置,没有任何错误消息。我可以在JOptionPane.showMessageDialog()
这里添加一个电话。但是,这似乎不是显示错误消息的合适位置。不知道无效输入的InputVerifier
确切性质,也不知道有效输入的格式,这对于提供有意义的错误消息更为关键。
想到的第一个解决方案是添加一个构造函数,该构造函数接受一个String
包含要显示的错误消息的参数。不过,这似乎是我将错误消息逻辑放在了错误的位置。
是否有用于错误处理和向用户提供消息的通用 Java 习惯用法?您如何建议我设计我的应用程序以清晰地显示错误消息?此外,如果我决定使用不同的平台(例如命令行、移动设备等)为软件设计一个界面,我希望能够尽可能多地重用我现有的代码库。(当然,由于这主要是一个 UI 问题,因此该要求可能不像我在这里想要的那样强烈适用。)