2 javafx
我有一个带有多个文本框的javafx应用程序,用户可以在其中输入信息。我还具有一个内置于应用程序中的键盘,当按下该键盘时,会将文本添加到文本框。
我的问题是,由于我有多个文本框,因此我不知道要将按钮文本添加到哪个文本框中。javafx中有没有一种方法可以检查用户是否单击了某个文本框,因此我可以检查选择了哪个文本框并在其中添加文本?
您可以使用Scene.focusOwner活动场景的属性来获取焦点节点。检查是否为a,TextInputControl然后为单击的按钮调用适当的方法。需要注意的是点击一个按钮可以来回移动焦点,如果focusTraversable是true该按钮。(默认情况下是这种情况。)
@Override
public void start(Stage primaryStage) {
GridPane grid = new GridPane();
final Scene scene = new Scene(grid);
for (int i = 0; i < 4; i++) {
grid.add(new TextField(), 0, i);
final String buttonValue = Character.toString((char) ('a'+i));
Button button = new Button(buttonValue);
button.setFocusTraversable(false); // prevent buttons from stealing focus
button.setOnAction(evt -> {
Node fo = scene.getFocusOwner();
if (fo instanceof TextInputControl) {
((TextInputControl) fo).replaceSelection(buttonValue);
}
});
grid.add(button, 1, i);
}
primaryStage.setScene(scene);
primaryStage.show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |