gpt4 book ai didi

java - 如何知道 JavaFX 中的插入符坐标(而不是位置)?

转载 作者:行者123 更新时间:2023-11-30 07:00:24 25 4
gpt4 key购买 nike

我想在 JavaFX 控件中的插入符号附近绘制类似自动完成的下拉框,例如 TextFieldTextArea .

是否可以知道节点坐标系中插入符的双数字坐标?

最佳答案

您可以使用inputMethodRequests 属性来检索位置。您可以指定相对于所选内容开头的索引,以获取该字符的屏幕坐标。

private static ContextMenu createMenu(String... text) {
ContextMenu menu = new ContextMenu();
EventHandler<ActionEvent> handler = evt -> {
TextInputControl control = (TextInputControl) menu.getUserData();
String t = ((MenuItem) evt.getSource()).getText();
control.replaceSelection(t);
};
for (String s : text) {
MenuItem item = new MenuItem(s);
item.setOnAction(handler);
menu.getItems().add(item);
}
return menu;
}

@Override
public void start(Stage primaryStage) {
ContextMenu menu = createMenu("Hello World", "42", "foo", "bar");
TextArea textArea = new TextArea();

TextField textField = new TextField();

VBox root = new VBox(textArea, textField);
root.setPadding(new Insets(10));

EventHandler<KeyEvent> handler = evt -> {
if (evt.isControlDown() && evt.getCode() == KeyCode.SPACE) {
evt.consume();
TextInputControl control = (TextInputControl) evt.getSource();
Point2D pos = control.getInputMethodRequests().getTextLocation(0);
menu.setUserData(control);
menu.show(control, pos.getX(), pos.getY());
menu.requestFocus();
}
};

textArea.addEventFilter(KeyEvent.KEY_PRESSED, handler);
textField.addEventFilter(KeyEvent.KEY_PRESSED, handler);

Scene scene = new Scene(root);

primaryStage.setScene(scene);
primaryStage.show();
}

关于java - 如何知道 JavaFX 中的插入符坐标(而不是位置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com