处理^和ê;使用JavaFX按键
在JavaFX应用程序中,我希望能够键入诸如处理^和ê;使用JavaFX按键,javafx,Javafx,在JavaFX应用程序中,我希望能够键入诸如ê、ô等字母。使用linux和我的键盘映射,这是用死字符完成的(即键入^,然后键入e) 我还尝试直接处理^键。根据Javadoc,^的关键代码是 下面是一个简单的按键测试应用程序,它在每次按键时打印按键的名称(e.getCode().getName())和文本(e.getText()): package sample; import javafx.application.Application; import javafx.scene.Scene;
ê
、ô
等字母。使用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()
一行(使用
按键事件)一行(使用按键事件)您的键盘是否有^
作为键?原因例如,我的键盘将其作为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问题。@roipousseree.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问题。@roipousseree.getCode()
不会显示某些内容,但是getText()
无法返回未定义的文本
您正在键入一个字符。。。它应该有用。。奇怪。。。。你试过法比安的评论吗KeyCode.DEAD_-扬抑
当您使用代码时,我可以有一个窗口的屏幕截图吗?我在原始主题中添加了一个屏幕截图。@Roipous在您添加KeyEvent.ANY
之前(它记录了所有3个关键事件,因此您实际上在窗口标签上只取最后一个释放的关键事件)[Add a
了解我的意思]尝试使用KeyEvent.KEY\u键入
。让我知道Fabian的评论是否适用于您的计算机。@Roipoussere只有^
的键盘是什么型号?