Java FX2.0 табличное представление - PullRequest
1 голос
/ 14 марта 2012

Таблица не меняет размеры, когда окно максимизирует. Есть ли для этого должным образом? Используется таблица в качестве просмотра журнала в моем проекте, мне нужно, чтобы она занимала все окно.

1 Ответ

0 голосов
/ 16 марта 2012

Вот пример кода для таблицы, размер которой будет изменяться, чтобы занимать все доступное пространство в окне, независимо от размера окна, состояния максимизации и т. Д.

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 вместо соответствующей изменяемой размера панели макета в качестве корневого узла.Или, возможно, вы не указали в таблице соответствующую политику изменения размера столбца .Трудно сказать, в чем заключается проблема макета без предоставленного кода, но, надеюсь, вы сможете заставить свой код работать с помощью приведенного выше примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...