【发布时间】:2014-12-26 22:12:41
【问题描述】:
我正在开发一个数据输入 GUI,它有大约 12 个文本字段供用户输入数据,然后用鼠标单击“保存”按钮来保存该数据。
我添加了一个 KeyEvent 来实现,所以当用户按下“Enter”时,它也会保存数据:
//Button Shortcut - Enter/Save
@FXML
public void handleEnterPressed(KeyEvent event) {
if (event.getCode() == KeyCode.ENTER) {
saveButton.requestFocus();
newCard(null);
event.consume();
}
}
这有效 - 如果保存按钮被聚焦。例如,我单击保存按钮,它保存数据。我按“Enter” - 它再次保存数据。如果我浏览所有字段直到焦点回到保存按钮,它将保存。但是,例如,如果我的光标位于其中一个文本字段上并且我点击“Enter”,则不会发生任何事情。 (newCard 是将文本字段数据保存到列表的方法)。
我在控制器中制作了一个新按钮:
@FXML private Button saveButton;
将 Scene Builder 中的 fx:id 设置为它并尝试使用 .requestFocus(),但它似乎不起作用。但它也不会抛出错误,所以我不确定我是否只是使用不正确。
【问题讨论】:
-
为什么必须通过保存按钮?为什么不直接从 KeyEvent 的处理程序中调用 save() 方法?
-
好的,所以我不太确定您所说的“KeyEvent 处理程序”是什么意思,我很确定它已经在这样做了。但是,这让我开始思考为什么我在 SceneBuilder 中将 KeyEvent 绑定到按钮本身……如果我可以将它绑定到其他地方?事实证明,我可以将它绑定到 AnchorPane!所以现在你可以在任何你想要的地方点击“Enter”,它会保存数据。谢谢你让我思考。
标签: java javafx scenebuilder