gpt4 book ai didi

JavaFX 无法填充 TableView

转载 作者:行者123 更新时间:2023-11-30 02:53:55 25 4
gpt4 key购买 nike

我刚刚开始使用 javafx,我想创建一个 TableView有 3 列,我可以在其中显示一些值。我创建了TableView以及场景编辑器作为 fxml 文件的列。然后我创建了一个名为 Values 的类我将特殊属性与它们应该适合的列相匹配。最后,我将可观察列表与其中的“值”对象设置为表的项目。当我启动应用程序时,它只显示一个空表。我现在在互联网上看了 4 个小时,仍然没有找到答案,为什么这对我不起作用。

这是我的代码:

值(value)类别:

public class Values {
public SimpleDoubleProperty PSI = new SimpleDoubleProperty(0);
public SimpleDoubleProperty ALPHA = new SimpleDoubleProperty(0);
public SimpleDoubleProperty DELTA = new SimpleDoubleProperty(0);

public Values(Double _PSI, Double _ALPHA, Double _DELTA) {
setPSI(_PSI);
setALPHA(_ALPHA);
setDELTA(_DELTA);
}

private void setPSI(Double p){
PSI.set(p);
}
private void setALPHA(Double p){
ALPHA.set(p);
}
private void setDELTA(Double p){
DELTA.set(p);
}

}

Controller :

@FXML Label psi;
@FXML Label alpha;
@FXML Label delta;


@FXML TextField betafield;
@FXML TextField lambdafield;
@FXML TextField lambdasatfield;

@FXML TableView<Values> table;
@FXML ObservableList<Values> oblist;
@FXML TableColumn <Values,Double> psicolumn;
@FXML TableColumn <Values,Double> alphacolumn;
@FXML TableColumn <Values,Double> deltacolumn;

@Override
public void initialize(URL location, ResourceBundle resources) {
psicolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("PSI"));
alphacolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("ALPHA"));
deltacolumn.setCellValueFactory(new PropertyValueFactory<Values, Double>("DELTA"));
}

@FXML
protected void buttonpressed(){
try {
Calculation cal = new Calculation(Double.parseDouble(betafield.getText()), Double.parseDouble(lambdafield.getText()), Double.parseDouble(lambdasatfield.getText()));
alpha.setText("Alpha: " + " " + cal.calculateAlpha());
delta.setText("Delta:"+ " " + cal.calculateDelta());
psi.setText("Psi:"+ " " + cal.calculatePSI());
table.setItems(FXCollections.observableArrayList(cal.calculateEvaluaiontable()));
}catch (NullPointerException e){
e.printStackTrace();
}
}

还有我的 FXML:

 <Tab text="tab" fx:id="tabe">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<TableView layoutX="4.0" layoutY="4.0" prefHeight="192.0" prefWidth="370.0" fx:id="table">
<columns>
<TableColumn prefWidth="120.0" text="PSI" fx:id="psicolumn" />
<TableColumn prefWidth="120.0" text="ALPHA" fx:id="alphacolumn" />
<TableColumn prefWidth="120.0" text="DELTA" fx:id="deltacolumn" />
</columns>
</TableView>
</children>
</AnchorPane>
</content>
</Tab>

感谢您的帮助!

最佳答案

<name>表示 PropertyValueFactory 的构造函数参数让<Name>表示相同 String ,但首字母大写。

PropertyValueFactory可以从以下来源之一获取值:

  1. 属性 getter,即 a 方法 SomeObservableValue <name>Property() .
  2. getter方法,即SomeType get<Name>()方法.

这些都不存在于您的 Values 中类。

对于psicolumn上类,Values需要 DoubleProperty PSIProperty()方法或double getPSI()方法。 (与其他列相同的问题)

关于JavaFX 无法填充 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810176/

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