2017-04-05 12 views
-1

パスワードフィールドで文字列チェックを実行すると「値を解決できません」というエラーが表示されます。誰でも自分のコードで何が間違っているかを教えてくれますか?私は文字列変数 "pass"を宣言したエラーを表示します。あなたはのJPasswordFieldは、クラスのメンバとしてをpasswdに宣言する必要があるため値はJavaのエラーを解決することができません

passwdのは

を解決することはできませんあなたは、原因とされています。あなたが得るエラーが

public class PassWord implements ActionListener { 
    JButton b; 
    PassWord() { 
     JFrame f=new JFrame("Home"); 
     JPasswordField passwd = new JPasswordField(); 
     JLabel l1=new JLabel("Enter Password"); 
     l1.setBounds(625,310, 150,30); 
     passwd.setBounds(600,340,150,30); 
     b = new JButton("Login"); 
     b.setBounds(640,380,70,30); 
     b.addActionListener(this); 


     f.add(passwd); f.add(l1); f.add(b); 
     f.setSize(1280,720); 
     f.setLayout(null);  
      f.setVisible(true);   
    } 

    public void actionPerformed(ActionEvent e) {  
     String pass = passwd.getPassword(); 
     if(pass.equals("test")) { 
     System.out.println("Success"); 
     } 
    } 
} 
+0

その方法で 'passwd'と呼ばれる何の変数がありません:文字配列ではなく、文字列を返しますpasswd.getPassword()。それをクラスレベルの変数にすることを意味しましたか? – David

答えて

0

コードには2つの問題があります。

最初に、クラス変数にごJPasswordFieldを行う必要があります。 セカンド:

public class PassWord implements ActionListener { 
    JButton b; 
    JPasswordField passwd; 
    PassWord() { 
     JFrame f=new JFrame("Home"); 
     passwd = new JPasswordField(); 
     JLabel l1=new JLabel("Enter Password"); 
     l1.setBounds(625,310, 150,30); 
     passwd.setBounds(600,340,150,30); 
     b = new JButton("Login"); 
     b.setBounds(640,380,70,30); 
     b.addActionListener(this); 


     f.add(passwd); f.add(l1); f.add(b); 
     f.setSize(1280,720); 
     f.setLayout(null);  
      f.setVisible(true);   
    } 

    public void actionPerformed(ActionEvent e) {  
     char[] pass = passwd.getPassword(); 
     if("test".equals(String.valueOf(pass))) { 
     System.out.println("Success"); 
     } 
    } 

} 
+0

ありがとうございます:) – Rajesh

2

以下のように私のコードですコンストラクタでのみ宣言されているため、メソッド内には表示されません。actionPerformed

関連する問題