我对我的简单安装程序/激活程序有疑问。在平台启动期间恢复。我正在学习教程http://platform.netbeans.org/tutorials/60/nbm-login.html,一切都很顺利,但现在我已经准备好自己的 JPanel 表单,用于与操作按钮进行对话,因为我不想要如果用户名或密码不正确,则继续。但现在我也无法继续,如果他们是正确的......
public class LoginForm extends javax.swing.JPanel {
public LoginForm() {
initComponents();
}
private void initComponents() {...}
protected javax.swing.JButton jButtonExit;
protected javax.swing.JButton jButtonLogin;
protected javax.swing.JButton jButtonRemindPass;
private javax.swing.JLabel jLabelMsg;
private javax.swing.JLabel jLabelPassword;
private javax.swing.JLabel jLabelUsername;
private javax.swing.JPasswordField jPasswordFieldPass;
private javax.swing.JTextField jTextFieldUser;
public String getUsername() {
return this.jTextFieldUser.getText();
}
public String getPassword() {
return new String(this.jPasswordFieldPass.getPassword());
}
public void setErrorLabel(String msg) {
jLabelMsg.setForeground(Color.RED);
jLabelMsg.setText(msg);
}
public void setInfoLabel(String msg) {
jLabelMsg.setForeground(Color.BLUE);
jLabelMsg.setText(msg);
}
}
在 Installer.java 中,我创建了一个 NotifyDescriptor 并使用空数组设置选项。现在我该如何强制通知
DialogDisplayer.getDefault().notifyLater(nd);
继续前进,因为我的平台在加载过程中会堆叠。
public class Installer extends ModuleInstall {
LoginForm lf;
NotifyDescriptor nd;
@Override
public void restored() {
createLoginDialog();
}
private void createLoginDialog() {
lf = new LoginForm();
lf.jButtonLogin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
authenticate();
}
});
lf.jButtonExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
exit();
}
});
nd = new NotifyDescriptor.Message(lf, NotifyDescriptor.PLAIN_MESSAGE);
nd.setOptions(new Object[]{});
nd.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (NotifyDescriptor.CLOSED_OPTION.equals(evt.getNewValue())) {
exit();
}
}
});
DialogDisplayer.getDefault().notifyLater(nd);
}
private void authenticate() {
if (lf.getUsername().equals("user")) {
if (lf.getPassword().equals("pass") {
System.out.println("Login and pass OK!");
} else {
lf.setErrorLabel("Incorrect password");
}
} else {
lf.setErrorLabel("Unknown username");
}
}
private void exit() {
LifecycleManager.getDefault().exit();
}
}