gpt4 book ai didi

java - 如何为TableView设置水平滚动条?

转载 作者:行者123 更新时间:2023-12-02 11:17:40 26 4
gpt4 key购买 nike

我的 tableView 有问题。我的表格 View 有两列,第二列内的行是文件路径。所以我想实现滚动条以通过滚动查看整个路径,因为 tableView 大小是固定的。

我添加了setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);它显示滚动条,但我无法移动它。

有什么实用的解决方案吗?

enter image description here

最佳答案

由于无法将图像上传到评论中,因此我在答案中发布了一张图像。我只是想确保你明白我的评论的意思。如果您这样做和/或这对您没有帮助,请告诉我,我将删除此答案。

这就是我通过 UI 增加列宽的意思。正如 GIF 所示,我确实必须向右滚动一点才能调整第二列的大小。这可能是因为首次渲染表格时有 1 或 2 个像素“离屏”。

enter image description here

这是我用来创建此示例的代码 (Java 10):

public class TestApplication extends Application {

@Override
@SuppressWarnings("unchecked")
public void start(Stage primaryStage) throws Exception {
var table = new TableView<>(FXCollections.observableArrayList(
new Person("John", "SomeGuyWithAReallyObnoxiouslyLongLastName"),
new Person("Jane", "Smith")
));

var firstNameCol = new TableColumn<Person, String>("First Name");
firstNameCol.setCellValueFactory(v -> v.getValue().firstNameProperty());

var lastNameCol = new TableColumn<Person, String>("Last Name");
lastNameCol.setCellValueFactory(v -> v.getValue().lastNameProperty());

table.getColumns().addAll(firstNameCol, lastNameCol);
table.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);
primaryStage.setOnShown(we -> {
we.consume();
firstNameCol.setPrefWidth(table.getWidth() / 2.0);
lastNameCol.setPrefWidth(table.getWidth() / 2.0);
});

var root = new StackPane(table);
root.setPadding(new Insets(30.0));
var scene = new Scene(root, 560.0, 360.0);
primaryStage.setScene(scene);
primaryStage.setTitle("People");
// primaryStage.setResizable(false);
primaryStage.show();
}

public static class Person {

private final StringProperty firstName = new SimpleStringProperty(this, "firstName");
public final void setFirstName(String name) { firstName.set(name); }
public final String getFirstName() { return firstName.get(); }
public final StringProperty firstNameProperty() { return firstName; }

private final StringProperty lastName = new SimpleStringProperty(this, "lastName");
public final void setLastName(String name) { lastName.set(name); }
public final String getLastName() { return lastName.get(); }
public final StringProperty lastNameProperty() { return lastName; }

public Person(String firstName, String lastName) {
setFirstName(firstName);
setLastName(lastName);
}

}

}

关于java - 如何为TableView设置水平滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com