2016-10-04 9 views
-3

Swingを使用してJavaでGUIを作成したのは、何らかの理由で同じJButtonのアクションを2回利用できません。ここでSwingで同じボタンを2回使用することはできません

コードです:

test1 = new JButton("test1 "); 
    test1.setLocation(290, 70); 
    test1.setSize(120, 30); 
    test1.addActionListener(this); 
    test1.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent e) { 
      if (test1.isEnabled()) { 
       errorLabel.setText(""); 
       service.submit(()->{ 
        Result result = JUnitCore.runClasses(Test1.class); 
        EventQueue.invokeLater(()->{ 
         errorMessageDisplay(result); 
         test1.setEnabled(true); 
        }); 
       }); 

      } 
     } 
    }); 
    buttonPanel.add(test1); 

これは、セレンのスクリプトを実行し、テストが完了した後、私は再び同じアクションを利用するためにGUIを再起動する必要があります。私には他のボタンがあることを知らせてください。 test2、test3など、私はtest1が完了した後に使用することができます。あなたのMouseListenerハンドラで

+2

[SwingのGUI上のボタンを無効にする](0120.jpg)を参照してください。 – xenteros

+0

同じ質問を2回尋ねる必要はありません。 – xenteros

+0

これは同じ質問ではありません。同じボタンを2回使用できない理由を理解しようとしています。その他の質問は、ボタンを無効にすることについてです...私はあなたがどこから来ているか分からないのですか? –

答えて

1

、あなたは

 if (test1.isEnabled()) { 
      test1.setEnabled(false); 

だから、それが有効になっている最初の時間を持っているが、その後、あなたはボタンを無効にしています。これは1回だけクリックすることができる理由です

+0

2行目の 'test1.setEnabled(false);'それでも私は同じボタンを2回使用することを許可していません –

0

ボタンを再び有効にするコードは、すべてのプロセスが完了した後(イベントrunClassesが完了した後)にのみイベントキューに追加されます。私はそれが起こる前にそれをクリックしようとしていると思います。

+0

しかし、私は100%のrunClassesメソッドが完了したので、テスト完了を示すために画面にメッセージを表示するようにします –

+0

そして匿名invokeLaterに渡すメソッド?それは実行されますか?そこにログトレースを追加して、それをチェックしようと思います –

関連する問題