gpt4 book ai didi

java - 当两个文本字段相等时启用 JButton

转载 作者:行者123 更新时间:2023-12-02 09:18:37 26 4
gpt4 key购买 nike

当同一面板中的两个文本字段相等时,我无法启用 JButton。我尝试添加 ActionListener 但仍然没有任何反应,并且我的 JButton 保持禁用状态。当我简单地尝试 str1.contentEquals(str2) 时,也发生了同样的事情。

txtPassword = new JTextField();
txtPassword.setForeground(Color.LIGHT_GRAY);
txtPassword.setText("password");
txtPassword.setBounds(115, 49, 200, 20);
panel.add(txtPassword);
txtPassword.setColumns(10);
String str1 = txtPassword.getText();

txtRepeatPassword = new JTextField();
txtRepeatPassword.setForeground(Color.LIGHT_GRAY);
txtRepeatPassword.setText("repeat password");
txtRepeatPassword.setBounds(115, 124, 200, 20);
panel.add(txtRepeatPassword);
txtRepeatPassword.setColumns(10);
String str2 = txtRepeatPassword.getText();

JButton btnNewButton = new JButton("Next >>>");
btnNewButton.setVisible(true);
btnNewButton.setEnabled(false);

btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

panelPYT.setVisible(true);
panel.setVisible(false);

}
});
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnNewButton.setBounds(88, 182, 259, 50);
panel.add(btnNewButton);

txtPassword.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
same();
}
public void removeUpdate(DocumentEvent e) {
same();
}
public void insertUpdate(DocumentEvent e) {
same();
}
public void same() {
if (str1.equals(str2)){
btnNewButton.setEnabled(true);
}
else {
btnNewButton.setEnabled(false);
}
}
});

JButton btnNext = new JButton("Next >>>");
btnNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

panelPYT.setVisible(false);
panel.setVisible(true);
}
});

最佳答案

您正在将监听器添加到 txtPassword,但我假设用户首先在 txtPassword 中输入密码,然后在 txtRepeatPassword 中输入密码> 第二。这意味着当用户在第一个字段中输入完毕后,DocumentListener 就会触发,而当用户在第二个字段中输入密码时,监听器不会触发,因为正在输入内容在txtRepeatPassword中。

长话短说,只需将 DocumentListener 添加到两个文本字段即可。

DocumentListener dlist = new DocumentListener(){
.... all your methods
};

txtPassword.getDocument().addDocumentListener(dlist);
txtRepeatPassword.getDocument().addDocumentListener(dlist);

你也需要改变

if (str1.equals(str2)){
btnNewButton.setEnabled(true);
}else {
btnNewButton.setEnabled(false);
}

if (txtPassword.getText().equals(txtRepeatPassword.getText())){
btnNewButton.setEnabled(true);
}else {
btnNewButton.setEnabled(false);
}

按照您的方式,str1str2 在初始化时仅保存各自文本框的值。您想要比较它们在监听器触发时保存的值,因此您必须检索当时的值。

关于java - 当两个文本字段相等时启用 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58844518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com