如何在javaFX的表格视图中调整列大小时获取列宽和名称
问题描述:
我需要在用户设置文件中保存列宽,我在云中加载TableView时使用的用户先前为了更好的用户经验。如何在javaFX的表格视图中调整列大小时获取列宽和名称
在我的研究中有width属性上变化的听众
tcName.widthProperty().addListener(new ChangeListener<Number>() {});
其中“tcName”是列对象。
这是在改变列宽时在原始中发射多次。
是否有任何事件被称为改变? 或者
任何possiblility获得输出像下面
@FXML
private TableView<ItemEmployee> tvData;
@FXML
private TableColumn<ItemEmployee, String> tcCode;
@FXML
private TableColumn<ItemEmployee, String> tcName;
@FXML
private TableColumn<ItemEmployee, String> tcCompany;
tcCode.setCellValueFactory(new PropertyValueFactory<>("Code"));
tcName.setCellValueFactory(new PropertyValueFactory<>("FullName"));
tcCompany.setCellValueFactory(new PropertyValueFactory<>("CompanyName"));
tvData.columnWidthChanged(){
system.out.println("width changed column name: tcCode/Code ");
system.out.println("width of column tcCode/Code : 150");
saveColumnWidth("tcCode/Code",150);
};
答
1,创建与假
boolean isUIUpdatedByUser = false;
默认值的布尔变量2.in您
tcName.widthProperty().addListener(new ChangeListener<Number>() {
isUIUpdatedByUser = true; // just set it to true
});
-
现在处理cl事件。有很多方法可以处理场景关闭事件。 a)给出一个ID您AnchorPane并得到像
ap.getScene()close事件getWindow()setOnCloseRequest(事件 - > {} )。
b)当你把你的舞台
primaryStage.setOnCloseRequest(事件 - 在你关闭事件> {
});
C)看到这个answer
-
现在。
{ //保存你的用户界面修改 saveColumnWidth(“tcCode/Code”,150); }
缓解处理多列宽度的任务。 可以执行以下
- 创建匿名类
//创建监听
final ChangeListener<Number> listener = new ChangeListener<Number>()
{
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, final Number newValue)
{
//do your code here
}
};
和使用它像
column1.widthProperty().addListener(listener);
column2.widthProperty().addListener(listener);
-
创建通讯在函数中添加调用它
公共无效的ChangeListener(最终的TableColumn listerColumn){ listerColumn.widthProperty()的addListener(新的ChangeListener(){
@Override public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) { System.out.print(listerColumn.getText() + " "); System.out.println(t1); } }); }
用户像
changelistener(column1);
changelistener(column2);
changelistener(column3);
感谢bro格栅片断,是否有任何方法来听TableView而不是列。 (当然是,我需要知道该列是否调整大小) – Labeeb
@Labeeb我已更新我的答案,以帮助您轻松进行多列宽度更改处理。如果这个答案符合你的需要。请接受答案:) –