繁体   English   中英

JavaFX 8 Tableview具有水平滚动

[英]JavaFX 8 Tableview with horizontal scrolling

如何显示水平滚动条,而不是将所有列压缩到最小尺寸? 您还应该仍然可以无限制地调整列的大小(并使水平滚动条调整)。

没有水平滚动条出现

要使列采用自己喜欢的尺寸而不使它们挤压到可用的屏幕尺寸,可以将columnResizePolicy设置为UNCONSTRAINED_RESIZE_POLICY

tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY); 

由于这是默认行为,因此您必须在某处将columnResizePolicy设置为CONSTRAINED_RESIZE_POLICY


更新资料

这是一个MCVE,它显示了如何在TableView中获得水平ScrollBar。 你可以看到,我不设置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;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM