我有許多按鈕,點擊時會運行腳本,如果成功,則會使用Swing在GUI上的文本字段中生成通過/失敗消息。我注意到,即使在點擊一個新按鈕來運行腳本後,仍然會顯示以前結果的文本。顯示該文本直到腳本完成,生成一個新的結果然後顯示。在Swing中的按鈕單擊操作上的清除文本框
我想添加一些代碼,以便在單擊新按鈕時,文本字段將被重置,並且在腳本完成之前不會顯示任何文本。
A按鈕:
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()) {
errorLabel.setText("");
result = JUnitCore.runClasses(Test1.class);
errorMessageDisplay(result);
}
}
});
buttonPanel.add(Test1);
爲錯誤消息中的代碼:
public void errorMessageDisplay(Result resultPass) {
errorLabel.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
errorLabel.setText("");
errorLabel.setVisible(true);
}
});
if (result.getFailureCount() > 0) {
errorLabel.setForeground(Color.red);
errorLabel.setVisible(true);
errorLabel.setText(" Failed");
}
else {
errorLabel.setForeground(Color.green);
errorLabel.setText(" Passed");
errorLabel.setVisible(true);
}
}
你需要在不同的線程上運行你的測試,你阻止了gui線程(EDT)。另外,爲什麼每次調用errorMessageDisplay時都會創建一個偵聽器? – matt
事情是,我想一次只能運行1個測試。我不需要創建一個新的Lisener嗎? –
我不知道爲什麼你需要一個新的偵聽器,它看起來像這個只清除文本,並將標籤設置爲可見。它應該已經可見,如果你點擊它。你只是積累了可以做同樣事情的聽衆。 – matt