有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取TableView列的大小?

有没有办法获取TableView列的当前大小?我甚至无法在网上找到这个问题,这让我觉得我错过了一些东西,因为我不是第一个需要这个功能的人

如果不可能,有没有办法设置TableView列的大小?这也解决了我的问题,尽管我更喜欢尺寸setFixedCellSize(double)看起来很有希望,但我没能让它发挥作用

我希望在TableView中的每一列上方都有一个文本字段,其大小与上面的列相同。如果有更好的方法来实现这一点,我愿意接受建议


共 (1) 个答案

  1. # 1 楼答案

    你可以使用Property-Bindings。但是TableColumn或TextField的width属性是只读的。这是正确的,因为宽度和高度是渲染整个窗口的布局过程的一部分

    因此,您需要为文本字段设置三个大小,即min-pref-max width,以及TableColumn中当前的宽度。在我看来,把TableColumns宽度作为TextFields宽度的主值是更可取的方法

    现在,即使手动调整大小,文本字段的宽度仍与“绑定”表格列的宽度相同

    下面是一点Minimal, Complete, and Verifiable example

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import javafx.scene.control.TextField;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    
    public class TableTest extends Application {
    
      @Override
      public void start(Stage primaryStage) {
        TextField field = new TextField();
    
        TableView<String> table = new TableView<>();
        TableColumn<String, String> column = new TableColumn("Header Text");
        table.getColumns().add(column);
    
        field.prefWidthProperty().bind(column.widthProperty());
        field.minWidthProperty().bind(column.widthProperty());
        field.maxWidthProperty().bind(column.widthProperty());
    
        VBox root = new VBox();
        root.getChildren().addAll(field, table);
    
        Scene scene = new Scene(root, 300, 250);
    
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
      }
    
      public static void main(String[] args) {
        launch(args);
      }
    }