1

NetBeans GUI ビルダーを使用して小さなアプリケーションを作成しています。手始めに、私はすべてを手作業でコーディングして、この問題をすぐに解決できるとだけ言っておきます。しかし、GUI ビルダーの使い方を知りたいです。これは、それを使用しないというすべての提案には反対票が投じられるという私の警告です。

そうは言っても、私の現在の状況はJFormattedTextField、ユーザーが無効な形式でデータを入力した場合にエラーメッセージを表示したいいくつかの s があるということです。ロジックはすべての場合で同じです。唯一の違いは、予想される正確なフォーマット (つまり、4 桁の年、正の整数など) に応じて異なるエラー メッセージを表示することです。すべてのテキスト フィールドで再利用できるリスナーを 1 つだけ作成したいと思います。最初のテキスト ボックスに次のメソッドを記述しました。

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。これは、イベント ハンドラー コンボボックスにも表示されません。

すべてのテキスト フィールドに対して 1 つのメソッドを作成するにはどうすればよいですか?

4

2 に答える 2

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 に答える