该图像是不言自明的。 当我调整窗口大小时,TableView 不会自动调整大小。 在 C# 中,我曾经通过使用 Anchor/Dock 属性来做到这一点。 我应该如何在 JavaFX 中做到这一点? 我找不到有关它的信息,可能是因为 Java 使用了不同的术语。

在此处输入图片说明

表.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<DialogPane prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.TableController">
    <header>
        <AnchorPane minHeight="50.0" minWidth="0.0" prefHeight="80.0" prefWidth="400.0">
            <children>
                <HBox alignment="TOP_CENTER" prefHeight="100.0" prefWidth="400.0">
                    <children>
                        <Label fx:id="descriptionLabel" alignment="CENTER" contentDisplay="CENTER" prefWidth="400.0" text="Text:" textAlignment="JUSTIFY">
                            <font>
                                <Font size="22.0" />
                            </font>
                        </Label>
                    </children>
                </HBox>
            </children>
        </AnchorPane>
    </header>
    <content>
        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="400.0">
            <children>
                <TableView fx:id="tableView" layoutY="-31.0" prefHeight="252.0" prefWidth="400.0">
                    <columns>
                    </columns>
                </TableView>
            </children>
        </AnchorPane>
    </content>
</DialogPane>

表控制器.java

package gui;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.util.Callback;

import java.sql.ResultSet;
import java.sql.SQLException;

public class TableController {

    @FXML
    private Label descriptionLabel;

    @FXML
    private TableView tableView;

    public void setTableResultset(String label, ResultSet resultSet) throws SQLException {
        ObservableList<ObservableList> data = FXCollections.observableArrayList();

        // Columns
        for (int i = 0; i < resultSet.getMetaData().getColumnCount(); i++) {
            final int j = i;
            TableColumn col = new TableColumn(resultSet.getMetaData().getColumnName(i + 1));
            col.setCellValueFactory((Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>) param -> {
                return new SimpleStringProperty(param.getValue().get(j).toString());
            });
            tableView.getColumns().add(col);
        }

        // Add records
        while (resultSet.next()) {
            ObservableList<String> row = FXCollections.observableArrayList();
            for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
                row.add(resultSet.getString(i));
            }
            data.add(row);
        }
        tableView.setItems(data);

        // Set label text
        descriptionLabel.setText(label);
    }
}

#1楼 票数:1 已采纳

您需要设置AnchorPane的顶部、底部、右侧和左侧锚点:

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="400.0">
    <children>
        <TableView fx:id="tableView" layoutY="-31.0" prefHeight="252.0" prefWidth="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <columns>
            </columns>
        </TableView>
    </children>
</AnchorPane>

  ask by nop translate from so

未解决问题?本站智能推荐:

1回复

由于“重复的TableColumns”(JAVAFX),ObservableList将不会显示在TableView上

我正在尝试将我的ObservableList中的数据显示到我在SceneBuilder中创建的TableView中。 TableView包含三个TableColumns。 我给他们提供了与FXML文件完全相同的名称。 我已经将它们导入到Controller中,就像您可以在下面的[1]中
2回复

JavaFX:TableView未显示在GUI中

我试图将我的程序绑定到SceneBuilder中设计的GUI。 我设法在最左边的列表中按需显示了我的“ Accounts.class” ID。 现在,我需要使TableView工作,但是我没有运气让它填充数据。 它应该包含来自“ Invoice.class”字段的数据,在每个Acc
2回复

JavaFX的TableView中未显示的项目

我有一个FXML的Table View pinTable和两个Table Columns即latColumn,longColumn。 我已按照以下方法填充表格: https://docs.oracle.com/javafx/2/ui_controls/table-view.htm
1回复

如何在JavaFX 8中捕获TableView的创建

我有一个带有TableView的JavaFX应用程序,该应用程序启动后需要填充数据。 我以以下方式启动应用程序: 在我的名为SampleController的控制器中,我拥有TableView对象,以便一旦启动它就(最初)创建一些列: 我以为,一旦舞台的WINDOW_SHOWN
1回复

javafx无法编辑TableView行数据

我想编辑tableview行数据,我有一些代码可以编辑单元格数据,但是在我的项目fxml代码中不起作用: 在FXML fx:id="tablecol"和fx:id="table"被用于 码: 请帮助为什么我无法编辑单元格数据。 谢谢。
1回复

从ObservableList填充tableView(JavaFX)无法正常工作

我尝试从data(ObservableList)填充tableview2(fx:id tableview)行。 但是,完成后,tableview2仅显示空记录。 在控制台中,我看到data(ObservableList)中的所有行。 我知道在stackoverflow中有多少个问题,对此感
1回复

javafx如何使用FXML从TableView获取选定的数据

我正在一个项目中,我想获取选定的tableview数据,但我正在使用FXML。 我有无FXML的代码,但无法将其用于FXML。 码: TestController: 现在我想知道我该如何编码以从tableview获取选定的数据 请帮我。 谢谢。
26回复

JavaFX 2.1 TableView 刷新项

我有这个常见问题,因为它似乎是。 重置后,我的表视图不会刷新我的项目。 我查了资料,是新的。 我从互联网上尝试了多种解决方案,但没有成功。 无法重置所有列,因为它添加了一个空的一个额外的(不知道为什么)并且调整大小会中断。 我的表不可编辑。 新数据已更改。 如果我更改项目的顺序并且行更改 (