У меня есть несколько кнопок, которые при нажатии будут запускать скрипт и в случае успеха будут генерировать сообщение Passed/Failed, отображаемое в текстовом поле в графическом интерфейсе с помощью Swing. Я заметил, что текст для предыдущего результата все еще отображается даже после нажатия на новую кнопку для запуска скрипта. Этот текст отображается до завершения скрипта, генерируя новый результат, который затем отображается.Очистить текстовое поле при нажатии кнопки в Swing
Я хотел бы добавить код, чтобы при нажатии новой кнопки текстовое поле сбрасывалось и текст не показывался до завершения сценария.
Кнопка:
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). Кроме того, почему вы создаете слушателя каждый раз, когда вызывается ошибкаMessageDisplay? – matt
Дело в том, что я хочу иметь возможность запускать только 1 тест за раз. Разве мне не нужно создавать нового лизена? –
Я не знаю, почему вам нужен новый слушатель, похоже, что этот только очищает текст и устанавливает ярлык видимым. Он уже должен быть виден, если вы нажмете на него. Вы просто накапливаете слушателей, которые будут делать то же самое. – matt