【发布时间】:2016-10-04 11:03:16
【问题描述】:
我有一个 GUI 上的按钮,当在 Selenium 中单击时执行测试。它们只能串行运行,目前已添加到EventQueue。我希望这样,如果单击按钮并执行测试,它将禁用其他按钮,以便其他测试无法添加到队列中。
目前一个按钮看起来像:
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 上重置更新通过/失败错误消息。
我怎样才能最好地做到这一点?
【问题讨论】:
-
你的代码有什么问题?如果您不需要禁用效果,即如果按钮可以单击但操作不执行任何操作,则可以使用共享信号量(例如锁定对象)。
-
你不应该以这种方式使用 MouseListeners。这就是 ActionListener 的用途。一方面,如果按钮被禁用,MouseListeners 会忽略,而 ActionListeners 不会。
-
我的回答对您有帮助吗?给我一些反馈,以便我改进我的答案。
-
嗨,我目前正在尝试实现它,我在 GUI 上有 15 个按钮,所以我需要将这些都设置为默认禁用?
标签: java swing selenium-webdriver jbutton