0
我在GUI上有按鈕,可以在Selenium中單擊時執行測試。它們只能連續運行,目前已添加到EventQueue
。我希望這樣,如果點擊一個按鈕並執行一個測試,它將禁用其他按鈕,以便其他測試不能添加到隊列中。在Swing中禁用GUI上的按鈕
目前的按鈕看起來像:
Test1 = new JButton("Test1 ");
Test1.setLocation(290, 30);
Test1.setSize(120, 30);
Test1.addActionListener(this);
Test1.addMouseListener(new MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if (Test1.isEnabled()) {
Test1.setEnabled(false);
errorLabel.setText("");
service.submit(()->{
Result result = JUnitCore.runClasses(Test1.class);
EventQueue.invokeLater(()->{
errorMessageDisplay(result);
Test1.setEnabled(true);
});
});
}
}
});
buttonPanel.add(Test1);
我已經使用了EventQueue
,因爲它可以讓我在GUI重置更新通過/失敗的錯誤消息。
我該如何做到最好?
什麼是你的代碼的問題嗎?如果你不需要禁用的效果,也就是說,如果一個按鈕是可點擊的而該動作什麼都不做,你可以使用共享信號量(例如鎖定對象)。 – Thomas
你不應該以這種方式使用MouseListeners。這是ActionListeners的用途。首先,MouseListeners會忽略一個按鈕是否被禁用,而ActionListeners則不會。 –
我的回答對你有幫助嗎?給我一些反饋,這樣我可以改進我的答案。 – xenteros