2016-05-03 10 views
0

私はユーザー名の確認ボックスを作成しています。テキストフィールドに入力されたテキストが変数nameに既に定義されているタイプと一致するかどうかを確認する必要があります。アクションリスナーから回答を得る

私はそれを取得する方法がわかりません。私は次のコードを実装して試していました。このコードは、ボタンを押すと実行されるアクションで、テキストフィールドが変数名と一致するかどうかを確認します。

コードは以下の通りです。あなたのAction()コンストラクタで

public class Action extends JFrame implements ActionListener 
{ 
    JLabel l; 
    JTextField t; 
    JButton b; 
    final String name = "harry"; 


    public Action() 
    { 
     l = new JLabel("Name"); 
     l.setBounds(10, 10, 100, 33); 

     t = new JTextField(); 
     t.setBounds(60, 10, 100, 30); 

     b = new JButton("send text"); 
     b.setBounds(80, 120, 100, 40); 



     add(l); 
     add(t); 
     add(b); 


     setSize(300, 300); 
     setLayout(null); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 



    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     if (t.getText() == name) 
     { 
      JOptionPane.showMessageDialog(this, "you mach"); 
     } 
     else 
     { 
      JOptionPane.showMessageDialog(this, "you dont"); 
     } 

    } 

    public static void main(String[] args) 
    { 
     new Action(); 

    } 

} 
+2

'==' Javaで 'String'をどう比較するのではなく、代わりに' t.getText()。equals(name) 'を使用するべきです – MadProgrammer

+0

@MadProgrammerですが、何も印刷しません。 –

+1

私は投票しています[アクションリスナーの作成方法](https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener)のような適切なチュートリアルを読んで、簡単に答えを見つけることができます。 html)と[ボタン、チェックボックス、ラジオボタンの使い方](https://docs.oracle.com/javase/tutorial/uiswing/components/button.html) – MadProgrammer

答えて

2

、あなたはフレームにActionListenerを追加する必要があります。

addActionListener(this); 

それが動作するためにあります。

また、文字列がオブジェクトであるため、文字列を.equals()と比較します。 Stackは文字列の値を格納しません。ヒープは値を格納しません。文字列の値を比較するには、t.getText().equals(name)

actionPerformed()クラスに変更してください。

関連する問題