使用 TestFx 测试 JavaFX 应用程序时遇到问题。我放了一个示例,仅使用 VBox 而不是我在实际应用程序中使用的 BorderPane。我只是用画布填充窗格,使其不为空,但有或没有任何变化。
public class MainPanelTest extends ApplicationTest {
Pane toTest;
boolean pressed = false;
@Override
public void start(Stage stage) {
toTest= new VBox(new Canvas(800,800));
toTest.setOnKeyPressed(e -> {
System.out.println("Pressed");
pressed = true;
});
stage.setScene(new Scene(toTest));
stage.show();
stage.toFront();
}
@Test
public void test_keyPressed_D() {
clickOn(toTest);
press(KeyCode.D);
WaitForAsyncUtils.waitForFxEvents();
assertTrue(pressed);
}
}
例如,如果我使用 TextField 而不是窗格,则一切正常:
public class MainPanelTest extends ApplicationTest {
TextField toTest;
boolean pressed = false;
@Override
public void start(Stage stage) {
toTest= new TextField();
toTest.setOnKeyPressed(e -> {
System.out.println("Pressed");
pressed = true;
});
stage.setScene(new Scene(toTest));
stage.show();
stage.toFront();
}
@Test
public void test_keyPressed_D() {
clickOn(toTest);
press(KeyCode.D);
WaitForAsyncUtils.waitForFxEvents();
assertTrue(pressed);
}
}
有什么我在这里想念的吗?在实际应用中,当我按下一个键时,事件被正确捕获。