1

我正在使用 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。这也不会出现在事件处理程序组合框中。

我该怎么做才能为我的所有文本字段创建一个方法?

4

2 回答 2

3

如果您已经编写了处理程序,例如 btnActionPerformed,请复制名称。

在设计视图中,右键单击要附加处理程序的组件 > 属性 > 事件 > “...”按钮 > 添加 > 将现有处理程序名称粘贴到空白字段中,然后单击确定。

(网豆 7.3.1)

于 2013-07-18T04:48:02.500 回答
0

创建自己的方法,例如 validate():

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);
}
于 2012-08-24T22:27:14.597 回答