如何使水平滚动条出现而不是将所有列挤压到最小尺寸?您还应该能够调整列的大小而不受约束(并调整水平滚动条)。
piah890a1#
要使列采用他们喜欢的大小,而不是使他们压缩到可用的屏幕大小,可以设置 columnResizePolicy 至 UNCONSTRAINED_RESIZE_POLICY ```tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);
columnResizePolicy
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; } }
}
1条答案
按热度按时间piah890a1#
要使列采用他们喜欢的大小,而不是使他们压缩到可用的屏幕大小,可以设置
columnResizePolicy
至UNCONSTRAINED_RESIZE_POLICY
```tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY);
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 {
}