在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。
编辑:截图:
答案 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("^"){
.....
}