- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道,这个问题已经被问过数百次了,我花了 3 个小时阅读了所有这些问题。我正在使用 JavaFX 编写一个小应用程序(我之前已经这样做过......)。除了将内容放入我的专栏之外,一切正常:
@FXML public void initialize() {
exerciseColumn.setCellValueFactory(new PropertyValueFactory<Exercise, String>("name"));
}
这是我的初始化方法:
public StringProperty nameProperty() {
return name;
}
是“StringProperty name”的属性 getter 。真正有趣的是,该代码是我不久前制作的另一个项目的精确副本(当然,我对所有内容进行了两次和三次检查),我今天再次编译了它,并且运行良好。我读了一半 JavaFX 文档来寻找解决方案,但它没有任何意义。如果您认为需要更多代码来帮助我,那么我当然可以提供。
编辑:具有相同问题的另一个示例(至少我希望如此)
主要:
package test;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import test.model.Exercise;
import test.view.Controller;
public class Main extends Application {
private Stage primaryStage;
private AnchorPane pane;
private ObservableList<Exercise> activeSession = FXCollections.observableArrayList();
public Main() {
activeSession.add(new Exercise("ednhzrd"));
}
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Test");
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/view.fxml"));
pane = (AnchorPane) loader.load();
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
Controller controller = new Controller();
controller.setMainApp(this);
} catch(Exception e) {
e.printStackTrace();
}
}
}
Controller :
package test.view;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import test.Main;
import test.model.Exercise;
public class Controller {
@FXML private TableView<Exercise> exerciseTable;
@FXML private TableColumn<Exercise, String> exerciseColumn;
private Main main;
public Controller() {}
@FXML
public void initialize() {
exerciseColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
}
public void setMainApp(Main main) {
this.main = main;
}
}
练习:
enter codepackage test.model;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class Exercise {
private StringProperty name;
public Exercise(String name) {
this.name = new SimpleStringProperty(name);
}
public StringProperty nameProperty() {
return name;
}
}
fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane prefHeight="400.0" prefWidth="209.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="test.view.Controller">
<children>
<TableView fx:id="exerciseTable" layoutX="200.0" layoutY="100.0" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="exerciseColumn" prefWidth="75.0" text="C1" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</AnchorPane>
最佳答案
您的cellValueFactory
没有问题。这里唯一的问题是你从来没有在表中放入任何项目。如果修改 Controller 以向表中添加测试项:
package test.view;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import test.Main;
import test.model.Exercise;
public class Controller {
@FXML
private TableView<Exercise> exerciseTable;
@FXML
private TableColumn<Exercise, String> exerciseColumn;
private ObservableList<Exercise> activeSession = FXCollections.observableArrayList();
private Main main;
public Controller() {
}
@FXML
public void initialize() {
exerciseColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
activeSession.add(new Exercise("hrrykane"));
exerciseTable.setItems(activeSession);
}
public void setMainApp(Main main) {
this.main = main;
}
}
然后你就看到了想要的效果:
关于JavaFX setCellValueFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612023/
我知道,这个问题已经被问过数百次了,我花了 3 个小时阅读了所有这些问题。我正在使用 JavaFX 编写一个小应用程序(我之前已经这样做过......)。除了将内容放入我的专栏之外,一切正常: @FX
我已经定义了表: @FXML private TableView tv_loro_nostro_accounts; private TableColumn tc_acc_nam
我正在尝试执行以下操作: tableColumns[0].setCellValueFactory( new PropertyValueFactory("username")
我已经检查了至少 20 个与该主题相关的其他线程,并尝试尽我所能进行调试,但我不知道为什么它不起作用。我希望我的“addButton”在按下按钮时将数据从文本框添加到我的 TableView 中。 我
我有一个填充对象列表的表,在其中一个列中我有一个comboBoxColumn。虽然 combobox 列不是 object 类的一部分,但我只是希望它在列中显示一个 String 。 我该怎么做?无需
在与 Netbeans 和 Scenebuilder 混了一段时间之后,我遇到了一个我不太明白的问题。我使用自定义 cellfactory将双击事件绑定(bind)到我的表格 View 中的单元格。但
我们如何使用 setCellValueFactory 和 setCellFactory? 它们之间有什么区别? 最佳答案 根据文档: setCellValueFactory 需要设置单元格值工厂以指定
我有一个自定义类 BasicDataSet其中包含 HashMap需要渲染(和可更新)到 JavaFX TableView 。一个BasicDataSet对象表示一行,该列缺少的任何 HashMap
我有一个带有自定义单元格渲染的表列,此单元格渲染采用一个对象并将其属性渲染为标签。问题是我找不到将数组列表中的相同对象传递到列的方法。这是我的代码: //I want to render this
我正在尝试遵循此 JavaFX 2 指南: http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE 我使用 Scala
今天,我在尝试了解有关 JavaFX 和 Java 的更多信息时遇到了另一件我不太了解的事情。 引用以下教程(我试图将原理应用于组织者): JavaFX 8 Tutorial 我将简要概述我有问题的特
我有以下代码行在 JavaFX 中设置列: branchActionColumn.setCellValueFactory(cd -> cd.getValue().getAction().getTe
来自 eclipse 帮助: setCellValueFactory 需要将单元格值工厂设置为指定如何填充单个 TableColumn 中的所有单元格。单元值工厂是一个提供 CellDataFeatu
所以我遇到的主要问题是尝试设置 columnUUID.setCellValueFactory( new PropertyValueFactory("different") ); 时它不会填充 colu
我是一名优秀的程序员,十分优秀!