Пожалуйста, помогите.
Ситуация: у нас есть 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);
}
}