有效的方法不适用于Netbeans RCP平台上的自定义选项面板

时间:2011-07-10 10:47:46

标签: java netbeans-platform

我有以下问题:

我正在实施基于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;
}

1 个答案:

答案 0 :(得分:1)

提示在此代码注释中

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

您需要告知控制器何时发生了变化以及何时验证数据。 因此,在一个简单的场景中,您可以监听一个keytyped事件,然后调用 controller.changed()

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
    controller.changed();
}