使用JavaFX处理^和ê键按下

时间:2016-12-14 22:59:18

标签: javafx

在JavaFX应用程序中,我希望能够键入êô等字母。使用linux和我的键盘映射,可以使用死字符(即键入{{ 1}},然后是^)。

我还尝试直接处理e密钥。根据Javadoc,^的关键代码是KeyCode.CIRCUMFLEX

这是一个简单的按键测试应用程序,每次按下一个键时都会打印一个键的名称(^)和文本(e.getCode().getName()):

e.getText()

当我运行此应用程序时:

  • 我无法显示需要死信的字符(如package sample; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { BorderPane pane = new BorderPane(); Label label = new Label("Type some text..."); pane.setLeft(label); Scene scene = new Scene(pane, 200, 40); primaryStage.setScene(scene); primaryStage.show(); scene.setOnKeyPressed(e -> label.setText("name: " + e.getCode().getName() + "\ntext: " + e.getText())); } public static void main(String[] args) { launch(args); } } );
  • 密钥ê的代码为^,因此我无法使用UNDEFINED之类的内容处理此密钥。

我错误地使用了键事件,还是JavaFX问题?我使用的是Ubuntu 16.04和Java8。

编辑:截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

一行KeyEvent(使用KeyTyped Event

[适用于我需要使用的键盘 Shift + 6 来打印^]:

scene.addEventFilter(KeyEvent.KEY_TYPED,
event -> label.setText("name: " + event.getCharacter() + "\ntext: " + event.getCharacter()));

因此,要检测是否键入了^,您可以在事件中使用:

if(event.getCharacter().equals("^"){

..... 

}