您需要做的第一件事是选择您的存储方法,我建议使用 json 或 xml 两者都有其优点并获得广泛的支持。接下来你要弄清楚你要存储什么值
- 所有列
- 所有列的宽度
- 如果列可见
下面是一个如何存储这些值的示例
JSON
{
name : {
width:100,
showing:false
},
id : {
width:50,
showing:false
},
etc.
}
XML
<properties>
<name>
<width>100</width>
<showing>false</showing>
</name>
<id>
<width>50</width>
<showing>true</showing>
</id>
etc.
</properties>
接下来何时以及如何获取列值,如果您希望它们不断更新(不推荐),它会报告从 1 到 50 的每个数字,它将报告 1、2、3...50。您必须想办法过滤掉那些不需要的值。
public void changelistener(final TableColumn listerColumn) {
listerColumn.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
propertyStore.storeWidth(listerColumn.getText(),t1);//when the values are stored
}
});
}
通过changelistener(YourColumn);附加
更好的选择是在程序关闭时保存值
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) {
for(int i = 0; i<tv.getColumns().size();i++)
{
TableColumn x = (TableColumn) tv.getColumns().get(i);
propertyStore.storeWidth(x.getText(),x.getWidth());
propertyStore.storeVisible(x.getText(),x.isVisible());
//other option
propertyStore.storeWidth(x.getId(),x.getWidth());
propertyStore.storeVisible(x.getId(),x.isVisible());
}
}
});
如果你使用 getId(),你需要像这样为每个列设置一个 ID
TableColumn example = new TableColumn("example");
example.setId("ExampleID");
System.out.println(example.getId());//will print ExampleId
保存你的价值观
最后,您需要创建一个类来存储和从存储文件中获取值