javafx - 更改组合框的值后重新加载组合框
问题描述
初始化线程时,我正在使用从 sql 数据库中获取的项目填充组合框。
如果有人感兴趣:
public void initialize(URL arg0, ResourceBundle arg1) {
if(arr != null || arr.length > 0) {
for(int i = 0; i<arr.length; i++) {
cmBox.getItems().add(arr[i]);
}
}
}
我有一部分代码向 sql 表添加了一个新值,并且我想在发生这种情况时重新填充组合框。
如果我做:
cmBox.getItems().clear();
arr = sqld.selectAll();
if(arr != null || arr.length > 0) {
for(int i = 0; i<arr.length; i++) {
cmBox.getItems().add(arr[i]);
}
}
它工作正常,但除非我关闭并重新打开显示组合框的窗口,否则我看不到新的更改。
没有错误或任何东西,只是寻找重新加载组合框的创造性方法并让它实际显示更新的值,而无需手动关闭和重新打开窗口。
解决方案
当您将“新值添加到 sql 表”时,您不需要运行刷新按钮,comboBox.setItems(...)
这应该更新组合框这里是一个示例
public class Main extends Application {
private int[] data;
private int dataCount = 0;
@Override
public void start(Stage primaryStage) throws Exception{
data = randomizeData(dataCount);
ComboBox comboBox = new ComboBox();
comboBox.setItems(FXCollections.observableArrayList(
Arrays.stream(data).boxed().collect(Collectors.toList())));
Button updateDataButton = new Button("Update values in SQL Table");
updateDataButton.setOnAction(event -> {
//Update your SQL data
updateData();
//Refresh List
comboBox.setItems(FXCollections.observableArrayList(
Arrays.stream(data).boxed().collect(Collectors.toList())));
});
VBox vBox = new VBox();
vBox.setAlignment(Pos.CENTER);
vBox.getChildren().addAll(comboBox, updateDataButton);
Scene scene = new Scene(vBox);
primaryStage.setScene(scene);
primaryStage.show();
}
private int[] randomizeData(int additional){
int[] data = new int[5+additional];
for (int i = 0; i < data.length; i++) {
data[i] = (int) (Math.random()*10);
}
return data;
}
private void updateData(){
data = randomizeData(++dataCount);
}
public static void main(String[] args) { launch(args); }
}
推荐阅读
- android - 运行我的项目时显示此消息“Android 资源链接失败”
- c# - 如何反序列化 IPGeoLocation API 返回的 json 并在 .chtml 视图中使用
- c - C 编程中的 Malloc - 不兼容的指针类型
- sql - 存储数据排序:非聚集主键覆盖聚集索引
- reactjs - 反应原生rotateY
- visual-studio - 如何使用 vc142 而不是 vc141 构建解决方案
- python - 安装和运行 django 项目的正确方法是什么?
- amazon-web-services - 如何从 Windows 机器访问托管在 AWS EC2 上的自我管理的 docker 注册表?
- spring-boot - 有没有办法在 spring boot 中集成 java servlet faces?
- jquery - 无法在 Tampermonkey 中使用 jQuery