Например, я создал кнопку с надписью «1». Всякий раз, когда эта кнопка нажата, 1 добавляется к текстовому полю. Тем не менее, я могу добавить 1 в textField, просто набрав 1 на моей клавиатуре. При этом я хотел бы, чтобы кнопка нажала кнопку, чтобы получить представление, как если бы оно было нажато, а если ключ. Я думал Тан может быть, что можно справиться с этой проблемой следующим образом:Как сделать кнопку нажатой, когда нажата соответствующая клавиша на клавиатуре? JavaFX
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();
}
});
возможно дубликат: http://stackoverflow.com/questions/4753004/how-do-i-programatically-send-actionevent-to-jbutton –
@BhavikPatel Это JavaFX и не свинг , – NwDev
Вызов 'button.setPressed (true);' не работает? –