【发布时间】:2014-11-26 12:05:51
【问题描述】:
我在启动方法中有这段代码:
ObservableList<StringBuilder> list = FXCollections.observableArrayList();
list.add(new StringBuilder("0"));
list.add(new StringBuilder("1"));
list.add(new StringBuilder("2"));
list.add(new StringBuilder("3"));
list.add(new StringBuilder("4"));
list.add(new StringBuilder("5"));
list.add(new StringBuilder("6"));
list.add(new StringBuilder("7"));
list.add(new StringBuilder("8"));
list.add(new StringBuilder("9"));
ComboBox<StringBuilder> combo = new ComboBox<>(list);
Button change = new Button("change");
change.setOnAction((event) -> {
list.set(5, new StringBuilder("-"));
});
BorderPane borderPane = new BorderPane(combo, null, null, change, null);
Scene scene = new Scene(borderPane);
primaryStage.setScene(scene);
primaryStage.show();
我启动程序并选择第二个项目,然后多次单击“更改”按钮。什么都没有发生,这很好。 但是如果我选择项目“6”并单击“更改”按钮,那么组合框会自动选择下一个项目(“7”)。 为什么会发生?
那我们就可以换行了
list.set(5, new StringBuilder("-");
开
list.remove(5);
然后,如果我选择项目“2”并单击“更改”按钮,则不会发生任何事情。如果我再次选择项目“9”并单击“更改”按钮,那么组合框会自动选择上一个项目(“8”)。
我希望如果我只是更改项目,即使用列表的 set 方法,那么组合框不会更改选择。如何应对?
【问题讨论】:
标签: java combobox javafx components