javafx8表视图

cunj1qz1  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(301)

如何使水平滚动条出现而不是将所有列挤压到最小尺寸?您还应该能够调整列的大小而不受约束(并调整水平滚动条)。

piah890a

piah890a1#

要使列采用他们喜欢的大小,而不是使他们压缩到可用的屏幕大小,可以设置 columnResizePolicyUNCONSTRAINED_RESIZE_POLICY ```
tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);

因为这是默认行为,所以必须设置 `columnResizePolicy` 至 `CONSTRAINED_RESIZE_POLICY` 在某个地方。

### 更新

下面是一个mcve,它展示了如何在tableview中获得水平滚动条。你可以看到我没有设置 `columnResizePolicy` 因为 `UNCONSTRAINED_RESIZE_POLICY` 默认设置为。
添加mcve以提高清晰度:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.stream.IntStream;

public class Test extends Application {

@Override
public void start(Stage stage) throws Exception {
    TableView<Person> tableView = new TableView<>();
    tableView.setTableMenuButtonVisible(true);
    IntStream.range(0, 15).forEach(value -> {
        TableColumn<Person, String> tableColumn = new TableColumn<>("TableColumn" + value);
        tableColumn.setPrefWidth(100.0);
        tableView.getColumns().add(tableColumn);
    });

    IntStream.range(1, 10).forEach(value -> {
        Person person = new Person("Person" + value, value);
        tableView.getItems().add(person);
    });
    Scene scene = new Scene(new StackPane(tableView));
    stage.setScene(scene);
    stage.setWidth(500);
    stage.setHeight(500);
    stage.show();
}

public static void main(String[] args) {
    launch(args);
}

private class Person {
    private String name;
    private int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

}

相关问题