Ist es erforderlich, in EDT auf Schaukeleigenschaften zugreifen zu können?
Posted: 04 Sep 2025, 23:55
Ist es erforderlich, in EDT auf Schaukeleigenschaften zugreifen zu können? Alle Swing -Komponenten und verwandten Klassen müssen auf dem Ereignis -Versand -Thread auf auf abgerufen werden. Ausnahmen geworfen Auch wenn ich explizit eine failonThreadviolationRepaintManager installiere (siehe diese Seite für weitere Informationen).
Wenn ich damit durchkommen kann, würde ich es lieber vermeiden, jeden Getter-Anruf in einen EDT-posting-Lambda einzuwickeln (auch wenn ich es mit einer Dienstprogramm-Methode erleichtere, wie Callandwait (Field :: GetText) ).>
Code: Select all
import org.fest.swing.edt.FailOnThreadViolationRepaintManager;
import org.fest.swing.edt.GuiActionRunner;
import org.fest.swing.edt.GuiQuery;
import org.fest.swing.exception.EdtViolationException;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import javax.swing.JTextField;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
class EdtTest {
@BeforeAll
static void beforeAll() {
FailOnThreadViolationRepaintManager.install();
}
@Test
void settingThrows_butAccessingDoesNot() {
JTextField textField = GuiActionRunner.execute(new GuiQuery() {
@Override
protected JTextField executeInEDT() {
return new JTextField();
}
});
String text = "Some text";
assertThrows(EdtViolationException.class, () -> textField.setText(text));
assertDoesNotThrow(() -> textField.getText());
}
}