0

テキストフィールド、コンボボックスなどのswingアプリケーションの入力フィールドを検証し、すべてが問題ない場合にのみユーザーが[保存]ボタンを押すようにする最良の方法は何ですか? 検索機能も同じインターフェースであるとします。そのため、レコードを検索すると、入力フィールドも埋められます。ただし、その場合、[保存] ボタンは無効のままにする必要があります。

initComponents();
        btnSave.setEnabled(false);

        txt1.getDocument().addDocumentListener(new DocumentListener() {
              @Override
              public void changedUpdate(DocumentEvent e) {

              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                    validate(txt1.getText(),e);
              }

              @Override
              public void insertUpdate(DocumentEvent e) {
                    validate(txt1.getText(),e);
              }

              public void validate(String enteredText,DocumentEvent e) {
                    String currText = "";
                    try {
                          Document doc = (Document) e.getDocument();
                          currText = doc.getText(0, doc.getLength());
                    } catch (BadLocationException e1) {
                    }

                    if(enteredText.equals(currText)){
                      //if validated successfully
                           btnSave.setEnabled(false);
                    }else{
                    btnSave.setEnabled(true);
                    }
              }
        });
4

3 に答える 3

1

次の2 つの場所を使用して、ボタンのenabledプロパティを調整します。SavesetEnabled()

  • の実装でshouldYieldFocus()は、InputVerifier関連する各コンポーネントに添付されています。チュートリアルといくつかの例がここに引用されています。

  • コンポーネントの通常のリスナー。

于 2013-04-21T13:16:25.300 に答える
1

このように試しましたか?

    final JTextField textField = new JTextField();
    final JButton submitBtn = new JButton();
    submitBtn.setEnabled(true);

    textField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            validate(e);
        }
        public void removeUpdate(DocumentEvent e) {
            validate(e);
        }
        public void insertUpdate(DocumentEvent e) {
            validate(e);
        }

        public void validate(String enteredText) {
            String currText = "";
            try {
                Document doc = (Document)e.getDocument();
                currText = doc.getText(0, doc.getLength());
            } catch (BadLocationException e1) {
                e1.printStackTrace();
            }
            //validation of currText here

            //if validated successfully
            submitBtn.setEnabled(true);
            //else
            submitBtn.setEnabled(false);
        }
    });
于 2013-04-21T12:31:23.840 に答える
0

すべての入力が完了したかどうか、またはすべての検証に合格したかどうかを確認し、最終的にブール値を返すメソッドを作成します。

public boolean validate(...){
   //some stuff
   if(validated){
     return true;
   }else{
     return false;
   }
}

その後、次のように使用できます。

button.setEnabled(validate(...));
于 2013-04-21T12:19:39.987 に答える