gpt4 book ai didi

javafx tableview 列大小调整问题

转载 作者:行者123 更新时间:2023-11-30 10:37:11 27 4
gpt4 key购买 nike

我正在使用 Sceenbuilder 设计 GUI。在 TableView 中,我有 9 列。除了一个相同的宽度外,所有列都可以。这是来自 sceenbuilder 的屏幕截图: enter image description here

我只希望“serial”列的宽度更小。所以我将调整大小策略设置为 CONSTRAINED_RESIZE_POLICY。并禁用仅调整“串行”列的大小并将其设置为固定大小(例如 50)。

在 sceenbuilder 预览中,它工作正常,但是当我编译代码时,我在末尾得到一个空列,如下所示: enter image description here

只有在使用鼠标调整任何列的大小后,它才会自动获得所需的宽度。我的问题是为什么首先需要使用鼠标拖动任何列?这是我不想要的!

我该如何解决?

最佳答案

我的程序也有同样的问题,我用这种方法解决了它。

TableView 保留为 CONSTRAINED_RESIZE_POLICY。然后,在 TableColumn 上你想要一个特定的 width,设置 maxminpref 大小相同。这样,它不会比您的尺寸大,也不会小于您的尺寸。

Edit 1:

在试用它之后,我确定您只需要将 TableColumnmax width 设置为您想要的任何大小,因为这将在表头上分配适当的空间,但我下面的示例仍然有效。

示例如下:

Environment.fxml

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

<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>


<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.91" xmlns:fx="http://javafx.com/fxml/1">
<center>
<TableView prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<columns>
<TableColumn prefWidth="75.0" text="First Name" />
<TableColumn prefWidth="75.0" text="Last Name" />
<TableColumn prefWidth="75.0" text="Email Address" />
<TableColumn maxWidth="50.0" minWidth="50.0" prefWidth="50.0" text="Age" />
<TableColumn maxWidth="50.0" minWidth="50.0" prefWidth="50.0" text="Height" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</center>
</BorderPane>

Main. In my example, the fxml file is in a directory named fxml. Please adjust code for this.

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class Main extends Application {


public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws IOException {

FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("fxml/Environment.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root,800,800);
primaryStage.setScene(scene);
primaryStage.show();
}
}

关于javafx tableview 列大小调整问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207105/

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