当窗口最大化时,表视图没有调整大小。这有什么正确吗? 在我的项目中使用该表作为日志查看器,我需要它占据整个窗口。
答案 0 :(得分:0)
这是一个表的示例代码,它将调整大小以占用窗口中的所有可用空间,无论窗口大小,最大化状态等等。
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TableResize extends Application {
public static void main(String[] args) { launch(args); }
@Override public void start(Stage stage) {
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person,String>("firstName")
);
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person,String>("lastName")
);
TableView table = new TableView();
table.getColumns().addAll(firstNameCol, lastNameCol);
table.setItems(FXCollections.observableArrayList(
new Person("Jacob", "Smith"),
new Person("Isabella", "Johnson"),
new Person("Ethan", "Williams")
));
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
StackPane layout = new StackPane();
layout.getChildren().add(table);
stage.setScene(new Scene(layout));
stage.show();
}
public static class Person {
private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private Person(String fName, String lName) {
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
}
public String getFirstName() { return firstName.get(); }
public void setFirstName(String fName) { firstName.set(fName); }
public String getLastName() { return lastName.get(); }
public void setLastName(String fName) { lastName.set(fName); }
}
}
该示例是JavaFX TableView tutorial的代码的修改版本。
也许您使用Group而非适当的resizable layout pane作为根节点。或许您没有在桌面上设置合适的column resize policy。如果没有提供代码,很难说你的布局问题是什么,但希望你可以借助上面的例子让你的代码工作。