我在AnchorPane中嵌入了一个TextField和几个按钮。默认情况下,TextField没有焦点,因为我希望它显示提示文本(请参见JavaFX2的TextField中的prompttext在一些Java7更新后隐藏在焦点上--这似乎是一个已知的问题)。我希望TextField在用户按下ENTER或Escape以外的任何键时接收焦点。我创建了一个EventHandler,它附加到我的AnchorPane.setonKeyPressed()(和按钮的onKeyPressed监听器),它在键盘事件上运行一个开关,默认值为:
default:
Platform.runLater(new Runnable() {
@Override
public void run() {
myTxt.requestFocus();
myTxt.fireEvent(event);
}
});
这确实将焦点发送到TextField;但是,我按下的键实际上并没有显示在TextField中。换句话说,如果我键入
test
TextField将接收焦点,但仅
est
Oct 29, 2013 2:22:11 PM com.myapp.AppMainController$4 handle
INFO: Got key t at source Button[id=myBtn, styleClass=button]
Oct 29, 2013 2:22:11 PM com.myapp.AppMainController$6 handle
INFO: Got key t at source TextField[id=myTxt, styleClass=text-input text-field]
编辑1:我应该澄清的是,无论焦点是从窗格还是按钮切换到TextField都会发生这种情况。
编辑2(解决方案):实际问题是“platform.runlater”包装器。如果我只是请求焦点而不是“runlater”,我的关键事件就会像我预期的那样出现。
default:
myTxt.requestFocus();
我不知道你的上下文是什么样子的,但我是这样解决的
public class Main extends Application {
@Override
public void start(Stage stage) {
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
final TextField textField = new TextField();
final Button button = new Button();
vbox.getChildren().addAll(textField, button);
vbox.onKeyPressedProperty().set(new EventHandler<KeyEvent>() {
@Override public void handle(KeyEvent event) {
textField.requestFocus();
}
});
stage.setScene(new Scene(vbox, 300, 500));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
重要的部分是
vbox.onKeyPressedProperty().set(new EventHandler<KeyEvent>() {
@Override public void handle(KeyEvent event) {
textField.requestFocus();
}
});
通过使用keyPressedProperty,它将在您按下任意按钮时激活,而不是在您键入/释放按钮时激活。与首都和非首都一起工作。
this.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent paramT) {
Platform.runLater(new Runnable() {
@Override public void run() {
if (isFocused() && !getText().isEmpty()) {
selectAll();
}
}
});
}
});
我正在尝试从 kafka 主题中获取消息,并看到如果我将 auto.commit.reset 策略设置为“最早”,则所有消息都会得到正确处理。但是,如果设置为“最新”,则第一条消息将丢失,其余消息将得到正确处理。如果我在这里错过了什么,任何人都可以帮忙吗?
下面是HashMap中包含的值 获取第一个键(即活动键)的Java代码 我们如何收集第一个键“值”(即33),我想把“键”和“值”都存储在单独的变量中。
我有需要与两个反应性依赖项交互的代码——保存到数据库和发布到流,每个都返回实例。在这之后,我需要做更多的处理——所有这些都使用我开始时的原始对象,类似这样: 但问题是,不会返回我感兴趣的对象的,也不会返回。 我可以实现我想要的东西,比如: i、 e.映射到依赖函数只是为了得到它们的行为,然后再直接映射回来,但这似乎很奇怪-好像我可能缺少了更好的方法来使用API,它没有给出我在类型之间映射的提示,因
问题内容: 我今天犯了升级Eclipse的错误,现在无法启动新的Android项目。 我收到消息Proguard.cfg(找不到文件)。 我似乎在哪里找不到这东西?是否有可能摆脱它我在这个项目中不需要混淆… 谢谢 问题答案: 如果您确实不需要Proguard来混淆发行版,则可以从项目根文件夹的default.properties文件中删除以下行: proguard.config = proguar
我将获取一个用户列表作为数组,对数据进行分页,并以表格的形式显示在视图中。 为了迭代数组,我使用 foreach 循环。但是我的前循环迭代不起作用。 这是一个示例数组,当我执行< code>print_r()时,我有< code>id、< code>email和< code>full_name字段,我想在视图中显示它们 这是我迭代数组的视图部分。结果存储在< code>$userList中。这个数