2017-12-02 24 views
0

GUIを試しています。ボタンを押した後にテキスト値を変更したいと思っています。Java Swing、ブール値からのテキスト値の変更

ここでは、以下のいくつかのコードです:(注、加速プライベートブールはクラス内で宣言されている)

JButton btnAcceleration = new JButton("Acceleration"); 
    btnAcceleration.setBounds(10, 142, 121, 23); 
    btnAcceleration.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      Acceleration = true; 

     } 
    }); 

これはブールが真作ること、ボタンです(一度クリック)

JTextField ValueA = new JTextField(); 
    ValueA.setText("Value A"); 
    ValueA.setBounds(490, 141, 66, 22); 
    contentPane.add(ValueA); 
    ValueA.setEditable(false); 
    ValueA.setVisible(false); 

    if (Acceleration) { 
     ValueA.setText("Force"); 
     ValueA.setVisible(true); 
    } 

は、そして、実行したいコードがここにあります。 GUIをテストすると、コンソールにエラーは表示されませんが、このコードは機能しません。テキストフィールドは表示されず、表示されていてもテキストは変更されません。誰でもこれを修正する方法を知っていますか?

おかげ

答えて

1

あなたの問題は、呪術的思考の一つである(私もTextEditiable、同じ結果を有効にしようとしています)。あなたはGUI作成時にValueAフィールドを作成していますが、ブール値がtrueの場合はそれを表示するコードがありますが、このコードはGUI作成時に一度だけ呼び出され、ブール値が変更されたときには魔法のように再呼び出しされません。この問題を解決するには、リスナーが呼び出されたときに呼び出されるように、そのコードを単にActionListenerコードに移動してください。

コンポーネントの可視性を変更しているときは、正確に表示されるように、コンテナにrevalidate()repaint()を呼び出すことをお勧めします。

脇に、Java naming conventionsを学びたいと思うでしょう。変数名はすべて小文字で始まり、クラス名は大文字で始める必要があります。これを学んでこれに従うことで、コードをよりよく理解でき、他者のコードをよりよく理解できるようになります。

+0

ああ、ありがとう、過去数ヶ月にわたってJavaを学んできた、ちょうどGUIにちょっと潜んだことを決めた、フィードバックのおかげで – DrStrange02

+0

@ DrStrange02:編集を参照 –

関連する問題