我有以下问题:
我正在实现一个基于 Netbeans 平台的 RCP 应用程序。我向应用程序添加了一个新的自定义辅助选项面板。
设计面板并设置正确的方法后(我实现了当字段更改时从 Controller 调用更改的方法的部分),我修改了选项面板( View )中的有效方法以进行正确的验证所有领域。据我了解, Controller 调用它来在保存之前验证表单。唯一的问题是,从我所看到的情况来看,这个方法永远不会被调用,因此在其中完成的任何验证都不会被激活。
有人可以告诉我我做错了什么吗?谢谢!
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;
}
最佳答案
提示在此代码注释中
// TODO listen to changes in form fields and call controller.changed()
您需要告诉 Controller 何时发生更改以及何时验证数据。 因此,在一个简单的场景中,您可以监听按键事件,然后调用controller.changed()
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
controller.changed();
}
关于java - 有效方法不适用于 Netbeans RCP 平台上的自定义选项面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640630/