0

私は次の問題を抱えています:

Netbeansプラットフォームに基づくRCPアプリケーションを実装しています。新しいカスタムセカンダリオプションパネルをアプリケーションに追加しました。

パネルを設計して適切なメソッドを設定した後(フィールドが変更されたときにコントローラーから変更されたメソッドを呼び出す部分を実装しました)、オプションパネル(ビュー)から有効なメソッドを変更して、すべてのフィールドで適切な検証を行いました。私が理解したことから、これは保存する前にフォームを検証するためにコントローラーによって呼び出されます。唯一の問題は、このメソッドが私が見ることができるものから呼び出されることがないため、その中で行われる検証がアクティブ化されないことです。

誰かが私が間違っていることを教えてもらえますか?ありがとうございました!

boolean valid() {
    if (addressTextField.getText().isEmpty()) {
        return false;
    }
    if (portTextField.getText().isEmpty()) {
        return false;
    }
    if (userTextField.getText().isEmpty()) {
        return false;
    }
    if (passwordPasswordField.getPassword().length == 0) {
        return false;
    }
    if (databaseNameTextField.getText().isEmpty()) {
        return false;
    }

    //TODO: change this back to the connection string builder after testing
    String databaseURL = "jdbc:mysql://" + addressTextField.getText().trim() + ":"  + portTextField.getText().trim() + "/" + databaseNameTextField.getText().trim() +
            "?user=" + userTextField.getText().trim() + "&password=" + StringUtilities.charToString(passwordPasswordField.getPassword());
    if(!SQLDatabaseConnectionManagerImpl.testPing(databaseURL)) {
        messageLabel.setText("");
        messageLabel.setForeground(Color.red);
        messageLabel.setText(NbBundle.getBundle(ImportDataOptionsPanel.class).getString("ImportDataOptionsPanel.connectionErrorMessage.text"));
        debug("Error on database connection with the following connection string: " + databaseURL, ImportDataOptionsPanel.IMPORTANT);
        return false;
    }

    return true;
}
4

1 に答える 1

1

ヒントはこのコードコメントにあります

// TODO listen to changes in form fields and call controller.changed()

何かが変更されたとき、およびデータを検証するときは、コントローラーに通知する必要があります。したがって、単純なシナリオでは、キータイプのイベントをリッスンしてから、controller.changed()を呼び出すことができます。

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
    controller.changed();
}
于 2011-07-10T12:45:54.097 に答える