当变量不为空时获取变量的值

时间:2015-11-24 18:36:18

标签: java oop

当我的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。如果您要进行投票,请告诉我可以改进哪些方法以使我的问题更加明确。

2 个答案:

答案 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的评论),以表明不同的线程可以更改此变量。