ControlsFX CheckComboBox 显示上的刷新问题
Refresh issue on ControlsFX CheckComboBox display
我正在为我正在开发的应用程序学习 API JavaFX,我正在尝试使用 ControlsFX 中的 CheckComboBox
。
我进行了测试,以解决当我在填充 CheckComboBox
.
的 ObservableList
中添加项目时项目显示刷新的问题
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
替换了 CheckComboBox
并运行良好。
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");
我正在为我正在开发的应用程序学习 API JavaFX,我正在尝试使用 ControlsFX 中的 CheckComboBox
。
我进行了测试,以解决当我在填充 CheckComboBox
.
ObservableList
中添加项目时项目显示刷新的问题
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
替换了 CheckComboBox
并运行良好。
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");