使用键盘麻烦移动焦点

时间:2018-07-06 07:37:48

标签: java javafx scroll focus

请帮助。 情况:我们的VBox带有很多按钮(我可以通过键盘上的箭头键向上/向下滚动焦点),但是它们不适合较小的窗体,因此我需要垂直滚动。我应用了ScrollPane-最终,除了移动焦点之外,一切都变得很好。当我按上/下箭头键时,焦点保持静止,但会影响滚动。 我需要使用ScrollPane禁用按键滚动(仅使用鼠标!),并按向上/向下箭头键启用移动焦点。您能帮我吗,我该怎么办?

非常感谢!

这是我的代码

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class TestJavaFXScrollPane extends Application {
@Override
public void start(Stage primaryStage) {
    Button btn0 = new Button("Btn0");
    btn0.setOnKeyPressed((event) -> {
        System.out.println("btn.KeyPressed; Code: " + event.getCode());
    });
    Button btn1 = new Button("Btn1");
    Button btn2 = new Button("Btn2");
    Button btn3 = new Button("Btn3");

    VBox root = new VBox();
    root.getChildren().addAll(btn0, btn1, btn2, btn3);

    ScrollPane scrollPane = new ScrollPane(root);
    scrollPane.setOnKeyPressed(event -> {
        //if(event.getCode() == KeyCode.DOWN || event.getCode() == KeyCode.UP)
            //event.consume(); // Tried to fix issue, but without result ((
    });

    Scene scene = new Scene(scrollPane, 100, 80);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}
}

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案(对吗?)

removeSurrounding

}