【发布时间】:2015-10-01 00:57:12
【问题描述】:
例如,我创建了一个标记为“1”的按钮。每当按下此按钮时,都会将 1 附加到 textField。但是,我只需在键盘上键入 1 即可将 1 添加到 textField 中。这样做时,我希望通过按钮获得视图,就好像它被按下而不是按键一样。 我一直在想,也许可以通过这种方式来解决这个问题:
rootNode.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
textField.appendText(event.getCharacter());
if(event.getCharacter().equals("1")){
// here button should be pressed
}
}
});
有什么方法可以改变按钮的外观吗? 提前谢谢。
@James_D,您的程序可以正常工作,但我不会将您的解决方案应用于我的程序。也许是因为我定制了我的按钮。看看我的代码的一部分:
HashMap<String, Button> buttons = new HashMap<>();
int btnVal = 1;
for(int j = 5 ; j >= 3; j --){
for(int i = 1; i <= 3; i ++){
Button btn = createNumberButton(Integer.toString(btnVal++), inputField, i, j);
rootNode.getChildren().add(btn);
buttons.put(Integer.toString(btnVal), btn);
}
}
rootNode.setOnKeyPressed(event -> {
Button btn = buttons.get(event.getText());
if (btn != null) {
System.out.println(event.getText());
btn.arm();
inputField.appendText(event.getText());
}
});
rootNode.setOnKeyReleased(event -> {
Button btn = buttons.get(event.getText());
if (btn != null) {
btn.disarm();
}
});
【问题讨论】:
-
@BhavikPatel 这是 JavaFX 而不是 Swing。
-
呼叫
button.setPressed(true);不起作用? -
如果我的理解是正确的,您想制作在您的文本字段中输入相同文本的键吗?像 A, B, C -> text.append(A, B, C),但是一个按钮会显示按下的动作?
-
@James_D ,Button 中没有这种方法。
标签: java events button javafx handler