JavaFX填写表视图不可能
我刚开始使用javafx,我想创建一个包含3列的TableView
,我可以在其中显示一些值。 我用场景编辑器创建了TableView
和列作为fxml文件。 然后我创建了一个名为Values
的类,它具有与它们应该适合的列匹配的特殊属性。最后,我将可观察列表中的“Value”对象设置为表项。 当我启动应用程序时,它只显示一个空表。 我现在在网上看了4个小时,仍然没有找到答案为什么这对我不起作用。
这是我的代码:
价值等级:
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); } }
控制器:
@FXML Label psi; @FXML Label alpha; @FXML Label delta; @FXML TextField betafield; @FXML TextField lambdafield; @FXML TextField lambdasatfield; @FXML TableView table; @FXML ObservableList oblist; @FXML TableColumn psicolumn; @FXML TableColumn alphacolumn; @FXML TableColumn deltacolumn; @Override public void initialize(URL location, ResourceBundle resources) { psicolumn.setCellValueFactory(new PropertyValueFactory("PSI")); alphacolumn.setCellValueFactory(new PropertyValueFactory("ALPHA")); deltacolumn.setCellValueFactory(new PropertyValueFactory("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:
谢谢你的帮助!
设
表示PropertyValueFactory
的构造函数参数,让
表示相同的String
,但是使用大写的第一个字母。
PropertyValueFactory
可以从以下某个源获取值:
- 属性getter,即一个方法
SomeObservableValue
。Property() - getter方法,即方法
SomeType get
。()
您的Values
类中不存在任何这些。
要使psicolumn
工作, Values
需要DoubleProperty PSIProperty()
方法或double getPSI()
方法。 (与其他列相同的问题)