如何在javafx的tableview中设置列宽?
我有一个有两列的表。我应该将宽度设置为30%和70%。表是可展开的,但不是列。如何实现这一点?桌面视图是您的朋友: 如果设置如何在javafx的tableview中设置列宽?,javafx,Javafx,我有一个有两列的表。我应该将宽度设置为30%和70%。表是可展开的,但不是列。如何实现这一点?桌面视图是您的朋友: 如果设置TableView.setColumnResizePolicy(TableView.constrated\u RESIZE\u POLICY)所有列的大小将相等,直到达到TableViews的最大宽度 此外,您还可以编写自己的策略:该策略只是一个回调,其中ResizeFeatures作为输入提供,您可以从中访问表格列,,如果通过“表格可展开,但列不可展开”,您的意思是用户不
TableView.setColumnResizePolicy(TableView.constrated\u RESIZE\u POLICY)
所有列的大小将相等,直到达到TableView
s的最大宽度
此外,您还可以编写自己的策略:该策略只是一个回调
,其中ResizeFeatures
作为输入提供,您可以从中访问表格列
,,如果通过“表格可展开,但列不可展开”,您的意思是用户不应该能够调整列的大小,然后调用setresizeable(false);
在每列上
要使列保持相对于整个表宽度的指定宽度,请绑定列的prefWidth
属性
SSCCE:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class TableColumnResizePolicyTest extends Application {
@Override
public void start(Stage primaryStage) {
TableView<Void> table = new TableView<>();
TableColumn<Void, Void> col1 = new TableColumn<>("One");
TableColumn<Void, Void> col2 = new TableColumn<>("Two");
table.getColumns().add(col1);
table.getColumns().add(col2);
col1.prefWidthProperty().bind(table.widthProperty().multiply(0.3));
col2.prefWidthProperty().bind(table.widthProperty().multiply(0.7));
col1.setResizable(false);
col2.setResizable(false);
primaryStage.setScene(new Scene(new BorderPane(table), 600, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类TableColumnResizePolicyTest扩展了应用程序{
@凌驾
公共无效开始(阶段primaryStage){
TableView table=新TableView();
TableColumn col1=新的TableColumn(“一”);
TableColumn col2=新的TableColumn(“两”);
table.getColumns().add(col1);
table.getColumns().add(col2);
col1.prefWidthProperty().bind(table.widthProperty().multiply(0.3));
col2.prefWidthProperty().bind(table.widthProperty().multiply(0.7));
col1.可设置大小(false);
col2.可设置大小(false);
设置场景(新场景(新边框窗格(表),600400));
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
我已经设置了。表已经被适当地调整了大小。但是问题是我不能设置列宽度。如果我调整大小,它在末端显示另一个空列。那么你应该考虑发布一个MVE()。显示您的问题。我认为这在FXML中无法管理有点令人遗憾。比如设置宽度权重
之类。@TrudleR我认为您可以在FXML中这样做,没有?
。没有尝试过,但我不明白为什么它不起作用。这听起来非常有趣。但看起来tableColumn无法做到o在FXML中乘法。@TrudleR“tableColum不能乘法”是什么意思?我测试;它很好用。这只是一个表达式绑定:请。@TrudleR等等,什么?你发布了一个问题,现在你要阅读文档了?你应该在发布问题之前进行调查。。。。