处理^和ê;使用JavaFX按键

处理^和ê;使用JavaFX按键,javafx,Javafx,在JavaFX应用程序中,我希望能够键入诸如ê、ô等字母。使用linux和我的键盘映射,这是用死字符完成的(即键入^,然后键入e) 我还尝试直接处理^键。根据Javadoc,^的关键代码是 下面是一个简单的按键测试应用程序,它在每次按键时打印按键的名称(e.getCode().getName())和文本(e.getText()): package sample; import javafx.application.Application; import javafx.scene.Scene;

在JavaFX应用程序中,我希望能够键入诸如
ê
ô
等字母。使用linux和我的键盘映射,这是用死字符完成的(即键入
^
,然后键入
e

我还尝试直接处理
^
键。根据Javadoc,
^
的关键代码是

下面是一个简单的按键测试应用程序,它在每次按键时打印按键的名称(
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);
    }
}
运行此应用程序时:

  • 我不能显示需要死信的字符(比如
    ê
  • ^
    的代码是
    未定义的
    ,因此我无法使用类似
    的if(e.getCode()
我错误地使用了关键事件还是JavaFX问题?我使用Ubuntu 16.04和Java8

编辑:屏幕截图:


一行(使用
按键事件)一行(使用
按键事件)您的键盘是否有
^
作为键?原因例如,我的键盘将其作为Shift键的组合。这就是我检测它的方式。是的,我的键盘有
^
,没有
Shift
要求。请尝试一下代码,看看它是否有效;)应该是
KeyCode.DEAD\u扬抑
…是的,但是当我点击
^
时,我得到:
名称:未定义的文本:
(文本无任何内容)您的键盘是否有
^
作为键?原因例如,我的键盘将其作为Shift键的组合。这就是我检测它的方式。是的,我的键盘有
^
,没有
Shift
要求。请尝试一下代码,看看它是否有效;)应该是
KeyCode.DEAD\u扬抑
…是的,但是当我点击
^
时,我得到:
名称:未定义的文本:
(文本无任何内容)不,getCharacter()返回空字符串。我还尝试了以下代码:
scene.addEventFilter(KeyEvent.ANY,e->label.setText(“代码:+e.getCode()+”\nchar:+e.getCharacter()+”\ntext:+e.getText()+“\neventType:+e.getEventType().getName());},当我点击
^
时不显示任何内容。这是正式的javaFX问题。@roipoussere
e.getCode()
不会显示某些内容,但是
getText()
无法返回
未定义的文本
您正在键入一个字符。。。它应该有用。。奇怪。。。。你试过法比安的评论吗
KeyCode.DEAD_-扬抑
当您使用代码时,我可以有一个窗口的屏幕截图吗?我在原始主题中添加了一个屏幕截图。@Roipous在您添加
KeyEvent.ANY
之前(它记录了所有3个关键事件,因此您实际上在窗口标签上只取最后一个释放的关键事件)[Add a
了解我的意思]尝试使用
KeyEvent.KEY\u键入
。让我知道Fabian的评论是否适用于您的计算机。@Roipoussere只有
^
的键盘是什么型号的?不,getCharacter()返回一个空字符串。我还尝试了以下代码:
scene.addEventFilter(KeyEvent.ANY,e->label.setText(“代码:+e.getCode()+”\nchar:+e.getCharacter()+”\ntext:+e.getText()+“\neventType:+e.getEventType().getName());},当我点击
^
时不显示任何内容。这是正式的javaFX问题。@roipoussere
e.getCode()
不会显示某些内容,但是
getText()
无法返回
未定义的文本
您正在键入一个字符。。。它应该有用。。奇怪。。。。你试过法比安的评论吗
KeyCode.DEAD_-扬抑
当您使用代码时,我可以有一个窗口的屏幕截图吗?我在原始主题中添加了一个屏幕截图。@Roipous在您添加
KeyEvent.ANY
之前(它记录了所有3个关键事件,因此您实际上在窗口标签上只取最后一个释放的关键事件)[Add a
了解我的意思]尝试使用
KeyEvent.KEY\u键入
。让我知道Fabian的评论是否适用于您的计算机。@Roipoussere只有
^
的键盘是什么型号?