我一直在疯狂地寻找答案。是否可以在FXML TableView中定义硬编码值?我要硬编码的部分是第一列。
<TableView fx:id="calendarPopulator" layoutX="13.0" layoutY="125.0" prefHeight="282.0" prefWidth="474.0">
<columns>
<TableColumn editable="false" prefWidth="43.0" text="Tid">
<cellValueFactory>
<PropertyValueFactory property="Hi"/>
</cellValueFactory>
</TableColumn>
<TableColumn fx:id="mandagColumn" editable="false" prefWidth="81.2" sortable="false" text="Mandag" />
<TableColumn fx:id="tirsdagColumn" editable="false" prefWidth="81.2" sortable="false" text="Tirsdag" />
<TableColumn fx:id="onsdagColumn" editable="false" prefWidth="81.2" sortable="false" text="Onsdag" />
<TableColumn fx:id="torsdagColumn" editable="false" prefWidth="81.2" sortable="false" text="Torsdag" />
<TableColumn fx:id="fredagColumn" editable="false" prefWidth="81.2" sortable="false" text="Fredag" />
</columns>
</TableView>
只需在控制器中执行此操作。将fx:id
添加到列:
<TableColumn fx:id="tidColumn" editable="false" prefWidth="43.0" text="Tid" />
然后在控制器中:
public class Controller {
@FXML
private TableColumn<Something, String> tidColumn ;
public void initialize() {
tidColumn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper("Hi"));
}
}
如果您希望能够在FXML文件中定义“固定”值,我认为您将需要在单独的类中创建单元格值工厂实现。例如:
package application;
import javafx.beans.NamedArg;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.util.Callback;
public class FixedValueCellFactory<T> implements Callback<CellDataFeatures<?,T>, ObservableValue<T>> {
private final ObservableValue<T> valueWrapper ;
public FixedValueCellFactory(@NamedArg("value") T value) {
this.valueWrapper = new ReadOnlyObjectWrapper<>(value) ;
}
@Override
public ObservableValue<T> call(CellDataFeatures<?, T> param) {
return valueWrapper ;
}
}
则可以在FXML中执行以下操作:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TableColumn?>
<?import application.FixedValueCellFactory?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<BorderPane xmlns:fx="http://javafx.com/fxml/1" >
<center>
<TableView fx:id="table">
<columns>
<TableColumn text="fixed">
<cellValueFactory>
<FixedValueCellFactory value="Hi"/>
</cellValueFactory>
</TableColumn>
<TableColumn text="Name">
<cellValueFactory>
<PropertyValueFactory property="name"/>
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
</center>
</BorderPane>
下面是一些测试代码:
package application;
import java.io.IOException;
import java.util.Map;
import java.util.stream.IntStream;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class FixedValueCellTest extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("FixedValueTableTest.fxml"));
primaryStage.setScene(new Scene(loader.load(), 600, 400));
// should do in controller, this is for brevity:
Map<String, Object> namespace = loader.getNamespace();
TableView<Item> table = (TableView<Item>) namespace.get("table");
IntStream.rangeClosed(1, 20).mapToObj(i -> "Item "+i)
.map(Item::new).forEach(table.getItems()::add);
primaryStage.show();
}
public static class Item {
private final StringProperty name = new SimpleStringProperty();
public Item(String name) {
setName(name);
}
public StringProperty nameProperty() {
return name ;
}
public final String getName() {
return nameProperty().get();
}
public final void setName(String name) {
nameProperty().set(name);
}
}
public static void main(String[] args) {
launch(args);
}
}
问题内容: 在iPython笔记本中,我有一个while循环,可实时侦听串行端口和接收到的数据。 我想要实现的仅显示最新接收到的数据(即,仅一行显示最新数据。在单元格输出区域中不滚动) 我需要的是(我认为)当我收到新数据时清除旧的单元格输出,然后打印新数据。我想知道如何以编程方式清除旧数据? 问题答案: 您可以用来清除单元格的输出。 在此循环结束时,您只会看到一个。 没有代码示例,给您工作代码并不
问题内容: 我不知道如何对齐JTable中单元格的值。 例如,Jtable显示姓名工资X.先生100000.50 XXXX 234.34 YYYy 1205.50 我想以以下格式对齐“薪水”。 如何在JTable上方对齐 问题答案: 无需为此创建自定义类,只需使用默认渲染器即可: 或者更好的方法是在表中实际存储Double值,然后使用适当的数字渲染器,数字渲染器将自动右对齐。然后,您可以使用表格格
我有一个GridPane,如下所示: 我想通过代码合并网格中心的3列,但我找不到这样做的方法。有一个如何通过场景构建器实现这个的参考,但是我不用场景构建器。 有人知道如何合并它们吗?
问题内容: 当我读取excel数字单元格值时,我得到带小数的输出。例如:79读数为79.0,0.00读数为0.0。我编写的应用程序代码是: 问题答案: Stack Overflow上经常出现这个问题,因此建议您仔细阅读许多类似的问题,以找到答案! Excel将文件格式中的几乎所有数字都存储为浮点值,这就是为什么POI会为您返回数字单元格的双精度数字,因为这就是真正的数字。如果希望它看起来像在Exc
1、我希望能够从封闭工作簿的单元格中读取值 算法: > 从关闭的excel文件读取- 需要读取第一行第1列到第200列的整行 变量1等于(A1)的单元格值,其中A1是字符串变量2等于(B1)的单元格值,其中B1是整数变量3等于(c1)的单元格值,其中c1是字符串:::变量200等于(第1行第200列)的单元格值,其中值是字符串 最好的方法是什么? 我应该能穿过100排 你能告诉我吗
null 如您所料,A3将导致。现在将A2的格式更改为会计,使用小数点后2位。A2现在读,但是基础值仍然是,所以A3仍然是。 VBA 制作一个新模块并添加以下函数: null 和具有相同的基础值,但和没有,尽管它们都是使用和的方法计算的。 ()中的表达式正在访问和的实际基础值。如何在VBA中访问这些值?