2

Swingコンポーネントの値をクリアする方法はありますか?たとえば、クリアするたびにJTextFieldを取得する場合は、-を呼び出す必要がありますtxtField.setText("")。私はかつてこれらのタイプのケースのための効用メソッドを作りました-

public static void clearFields(JComponent[] components) {
        for (int i = 0; i < components.length; i++) {
            JTextComponent jComponent = (JTextComponent) components[i];
            jComponent.setText("");
        }
    }

SwingAPI自体でより良い方法が利用できるかどうか知りたいです。または、JPanelのすべての値を更新する方法があるかどうか。

4

2 に答える 2

3

2つの方法があります

  1. あなたのやり方には何の問題もありませんが、テストすることをお勧めします。そうすれば、1つのループで異なる(またはそれらのグループif (c instanceof JTextField) {)の値をre_set(異なる)することができますJComponents

  2. JComponentsある種のarrayまたはに希望を置くmap

  3. 削除(存在する場合)DocumentまたはDocumentListenerすべてのJTextComponent前から、値が再設定された後、ループが終了し、必要なリスナーをに追加してJTextComponent、リクルートイベントの発生を回避することに注意してください...

于 2012-08-05T13:45:32.617 に答える
2

いいえ、それは正しい方法であり、この方法でそれらをクリアすることの欠点はわかりません。

私が考えている唯一の代替方法は、新しいUIコンポーネントをインスタンス化してそれらをリレーアウトすることによってGUIを再作成することですが、それはやり過ぎのようであり、古いコンポーネントへのすべての参照を失うことになります。

于 2012-08-05T13:33:24.423 に答える