在ControlsFX CheckComboBox显示上刷新问题

时间:2015-07-09 15:37:20

标签: java combobox javafx controlsfx

我正在为我正在处理的应用程序学习API JavaFX,我正在尝试使用来自ControlsFX的CheckComboBox

我在填充ObservableList的{​​{1}}中添加项目时,为解决项目显示刷新问题而进行了测试。

CheckComboBox

与经典import org.controlsfx.control.CheckComboBox; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; public class Testin extends Application { private Stage main; private FlowPane root; private ObservableList<String> l; public Testin(){ root = new FlowPane(); l = FXCollections.observableArrayList(); l.add("bla"); l.add("shablagoo"); l.add("tirelipimpon"); } @Override public void start(Stage primaryStage) { main = primaryStage; CheckComboBox<String> test = new CheckComboBox<>(); test.getItems().addAll(l); Button btn = new Button("test"); btn.setOnAction(new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent event){ l.add("ok"); System.out.println("ok"); } }); root.getChildren().add(test); root.getChildren().add(btn); Scene scene = new Scene(root); main.setScene(scene); main.show(); } public static void main(String[] args) { launch(args); } } 一样,当项目添加到列表中时,它会自动刷新,但事实并非如此。 我是否必须创建ComboBox,在每次修改时,在显示的ListChangeListener列表中报告此内容,或者我的代码是否错误?

其他信息:我也尝试使用ComboBox进行此测试,替换ComboBox并运行良好。

1 个答案:

答案 0 :(得分:1)

test.getItems().addAll(someList);

copies all the elements of someList to the combo box's items list。显然,对someList的后续更改不会对组合框产生任何影响。

您要么替换

test.getItems().addAll(l);

test.setItems(l);
您想要替换

l.add("ok");

test.getItems().add("ok");