допустимый метод не работает на пользовательской панели параметров на платформе Netbeans RCP

У меня есть следующая проблема:

Я реализую приложение RCP на основе платформы Netbeans. Я добавил в приложение новую пользовательскую вторичную панель параметров.

После разработки панели и настройки правильных методов (я реализовал часть, которая вызывает измененный метод из контроллера при изменении полей), я изменил действительный метод на панели параметров (представление), чтобы обеспечить надлежащую проверку всех полей. . Насколько я понял, это вызывается контроллером для проверки формы перед сохранением. Единственная проблема заключается в том, что этот метод никогда не вызывается из того, что я вижу, поэтому любая проверка, выполняемая в нем, не активируется.

Может ли кто-нибудь сказать мне, что я делаю неправильно? Спасибо!

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;
}

person crazybyte    schedule 10.07.2011    source источник


Ответы (1)


Подсказка в этом комментарии к коду

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

Вам нужно сообщить контроллеру, когда что-то изменилось и когда проверить данные. Таким образом, в упрощенном сценарии вы можете прослушивать событие с типом ключа, а затем вызывать controller.changed()

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
    controller.changed();
}
person Tim Sparg    schedule 10.07.2011
comment
Что ж, я так и сделал (см. выше, где я сказал, что слушатели настраиваются для вызова метода изменения на контроллере при изменении содержимого поля). Попробую посмотреть, возможно есть баг. Спасибо! - person crazybyte; 10.07.2011
comment
Кажется, я использовал неправильное событие, и из-за этого слушатели никогда не звонили. Спасибо! - person crazybyte; 10.07.2011