我有以下问题:
我正在实施基于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;
}
答案 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();
}