【发布时间】:2014-10-31 19:24:01
【问题描述】:
我是 JavaFX 新手,所以这可能是一个微不足道的问题。我在用户单击菜单按钮时显示的对话框中有一个 ListView。问题是当对话框显示时,ListView 中的第一项已被选中。当用户选择一个项目时,我将listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<NewChoices>()) 作为监听器,但由于第一个项目已经被选中,所以当我点击第一个项目时没有任何反应。我需要找到一种方法来确保对话框显示时没有选择任何项目。我在显示对话框之前尝试使用listView.getSelectionModel().clearSelection(),但是如果程序丢失然后重新获得焦点,则会再次选择第一项而不被单击。如何防止第一个项目或任何项目被预选?
代码如下:
Pane rootPane = new Pane();
ObservableList<NewChoices> listChoices = FXCollections.observableArrayList(NewChoices.values());
ListView<NewChoices> listView = new ListView<NewChoices>();
listView.setItems(listChoices);
rootPane.getChildren().add(listView);
Stage newDialog = new Stage(StageStyle.UTILITY);
newDialog.initModality(Modality.APPLICATION_MODAL);
newDialog.setTitle("New");
Scene newDialogScene = new Scene(rootPane);
newDialog.setScene(newDialogScene);
newDialog.show();
【问题讨论】:
-
您使用什么 API 来显示对话框? JDK8_40?控制FX?自定义场景?除了该对话框上的列表之外,还有其他控件吗?
-
我认为我正在使用 JDK8_24。我现在不在我的电脑旁,所以我不记得确切的那个了,但它是 JDK8_2something。不,它只是对话框中的列表视图。
-
由于直到 8u40 之前还没有对话,我认为你所说的对话只是一个常规场景。如果那里只有一个列表(没有关闭所谓对话框的按钮?),我的猜测是当场景获得焦点时,因为唯一可聚焦的节点是列表,它的第一项被选中。添加一些确定/取消按钮可能会有所帮助,因为它们可以获得焦点。也许你可以添加一个MCVE。
-
对话框只是一个普通的舞台和场景,但它的右上角只有一个退出按钮,它会阻止对程序其余部分的输入。我将尝试添加一些确定/取消按钮,看看是否有效。如果我仍然遇到问题,我会在此处发布代码,以便您了解我哪里出错了。
-
我尝试添加一个按钮,但没有帮助。我现在将发布一些代码。
标签: java listview user-interface javafx