当我的Main类不是null
时,我需要从PasswordFrame中获取密码变量的值。这是PasswordFrame的代码:
public class PasswordFrame extends JFrame {
static JTextField tf;
static JButton button;
public String password;
boolean isPassword = false;
public PasswordFrame(){
tf = new JTextField();
button = new JButton("Enter");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
password = tf.getText();
isPassword = true;
}
});
}
我已经尝试过使用此代码:
public String getPassword(){
while(!(isPassword)){
}
System.out.println("out");
return password;
}
但是当我尝试
时PasswordFrame passwordfield = new PasswordFrame();
if (password.equals(passwordfield.getPassword())){
//code
}
"列"没有打印,它无法退出while
循环。为什么?如何使PasswordFrame正常工作并返回密码。
P.S。如果您要进行投票,请告诉我可以改进哪些方法以使我的问题更加明确。
答案 0 :(得分:0)
试试这个:
public class PasswordFrame extends JFrame {
static JTextField tf;
static JButton button;
public String password;
boolean isPassword = false;
public PasswordFrame(){
tf = new JTextField();
button = new JButton("Enter");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
password = tf.getText();
/*
* Check for non-null password must check both
* conditions ion this order
*/
if(if(password != null && ! password.isEmpty()){
isPassword = true;
}
}
});
}
答案 1 :(得分:0)
boolean isPassword
应替换为volatile boolean isPassword
(根据@Lashane的评论),以表明不同的线程可以更改此变量。