我有这个常见问题,因为它似乎是.重置后,我的表视图不会刷新我的项目.我检查了数据,这是新的数据.
我从互联网尝试了多种解决方案但没有成功.
无法重置所有列,因为它添加了一个空的额外(不知道原因)和调整大小只是破坏.
我的表格不可编辑.新数据已更改.
如果我更改项目的顺序并且行更改(:|),则刷新数据.
我只是没有想法.
目前刷新代码非常简单.
ObservableList<User> data = FXCollections.observableArrayList(User.getResellers());
reseller_table.setItems(data);
Run Code Online (Sandbox Code Playgroud)
新数据再次正确.当我选择tableView时,它返回新的正确Item.
我有一个显示人员联系方式的JavaFX 2表,让我们想象有三列:名字,姓氏和电子邮件地址.当我的应用程序启动时,它会在表格中填入几行有关系统中已有人员的数据.
问题是列宽都是一样的.大多数情况下,名字和姓氏都会完整显示,但电子邮件地址会被剪裁.用户可以双击标题中的分隔符来调整列的大小,但这将很快变得乏味.
一旦预先填充了表,我想以编程方式调整所有列的大小以显示它们包含的数据,但我无法弄清楚如何实现这一点.我可以看到我可以打电话,col.setPrefWidth(x)但这并没有真正帮助,因为我必须猜测宽度.
在JavaFX 2中使用TableView时,似乎神奇地添加了一列而不是调整现有列的大小.请参阅以下屏幕截图.
我期望/想要的是:两列都应有50%的空间,不应添加第三列(未命名/空).

使用Scene Builder创建的FXML代码:
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<top>
<TableView prefHeight="200.0" prefWidth="200.0">
<columns>
<TableColumn prefWidth="75.0" text="Column X" />
<TableColumn prefWidth="75.0" text="Column X" />
</columns>
</TableView>
</top>
</BorderPane>
Run Code Online (Sandbox Code Playgroud) 如何从FXML设置TableView的调整大小策略?我这样累了,但它不起作用:
<TableView layoutX="20.0" layoutY="20.0" prefWidth="674.0" prefHeight="668.0" fx:id="tableView" fx:constant="CONSTRAINED_RESIZE_POLICY">
<columns>
<TableColumn text="First Name" />
<TableColumn text="Last Name" />
<TableColumn text="Email Address" />
</columns>
</TableView>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个非常简单的 JavaFX TableView:1 列字符串。我有一个我想可视化的数组:
String[] acronyms = {"Foo", "Bar"};
Run Code Online (Sandbox Code Playgroud)
该文档假定某种数据类型来填充多个列(例如 Person、Book 等)。我会比那更“你好世界”:只显示一个字符串数组。
使用场景构建器,我创建了一个带有表和列的 fxml 文件:
<TableView fx:id="clientAcronymTable" prefHeight="200.0" prefWidth="200.0">
<columns>
<TableColumn fx:id="clientAcronymColumn" prefWidth="199.0" text="Client Acronyms" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
Run Code Online (Sandbox Code Playgroud)
然后我将这些元素“连线”到我的控制器中:
@FXML private TableView<String> clientAcronymTable;
@FXML private TableColumn<ObservableList<String>, String> clientAcronymColumn;
Run Code Online (Sandbox Code Playgroud)
在我的Initializable::initialize方法中,我有:
clientAcronymTable.setItems(FXCollections.observableList(acronyms));
Run Code Online (Sandbox Code Playgroud)
但是,GUI 中没有出现任何字符串。我知道发生了一些事情,因为列中显示了可见的行行,但它们都是空的。
当然还有类似的问题并不真正适用:
所以,我的问题是:
如何使我的 Array 中的字符串在 TableView 中可见?
如何使单列可编辑,以便用户可以添加更多字符串?
预先感谢您的考虑和回应。