我使用NetBeans GUI Builder创建一个小应用程序。首先,我要说的是我可以手动编码所有内容并立即解决这个问题。但是,我想学习如何使用GUI Builder。这是我的警告,所有不使用它的建议都会得到一次投票。
话虽如此,我目前的情况是,我有几个JFormattedTextField
,如果用户输入格式无效的数据,我想显示错误消息。每种情况下的逻辑都是相同的。唯一的区别是根据预期的确切格式显示不同的错误消息(即四位数年份,正整数等)。我想简单地编写一个可以为每个文本字段重用的侦听器。我为第一个文本框写了以下方法:
private void formattedTextFieldFocustLost(java.awt.event.FocusEvent evt) {
JFormattedTextField source = (JFormattedTextField)evt.getComponent();
if (!source.isEditValid()) {
// TODO: Need a better error message.
JOptionPane.showMessageDialog(this, "Invalid input.", "Input Error", JOptionPane.ERROR_MESSAGE);
source.requestFocusInWindow();
}
}
方法签名由NetBeans生成,并从生成的扩展FocusAdapter
的匿名内部类中调用。现在,当我转到NetBeans中的“设计”视图并单击另一个组件的focusLost
事件的组合框时,此方法名称不会显示。
我还尝试创建一个扩展FocusAdapter
的命名内部类。这不会出现在事件处理程序组合框中。
如何为我的所有文本字段创建单个方法?
答案 0 :(得分:3)
如果您已经编写过处理程序,请说btnActionPerformed,请复制名称。
在设计视图中,右键单击要附加处理程序的组件>属性>活动> “...”按钮>添加>将现有处理程序名称粘贴到空白字段中,然后单击“确定”。
(Netbeans 7.3.1)
答案 1 :(得分:0)
创建自己的方法,例如验证():
private void validate(JFormattedTextField source) {
if (!source.isEditValid()) {
// TODO: Need a better error message.
JOptionPane.showMessageDialog(this, "Invalid input.", "Input Error", JOptionPane.ERROR_MESSAGE);
source.requestFocusInWindow();
}
}
然后从您通过GUI编辑器定义的各个侦听器中调用此方法:
private void formattedTextFieldFocustLost(java.awt.event.FocusEvent evt) {
JFormattedTextField source = (JFormattedTextField)evt.getComponent();
validate(source);
}