Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX无法填充表视图_Java_Javafx_Tableview_Populate - Fatal编程技术网

JavaFX无法填充表视图

JavaFX无法填充表视图,java,javafx,tableview,populate,Java,Javafx,Tableview,Populate,我刚开始使用javafx,我想创建一个带有3列的TableView,在那里我可以显示一些值。 我用场景编辑器创建了TableView和列作为fxml文件。 然后,我创建了一个名为Values的类,该类具有与列匹配的特殊属性。 最后,我设置了可观察列表,其中的“值”对象作为表项。当我启动应用程序时,它只显示一个空表。 我现在在网上看了4个小时,仍然没有找到一个答案,为什么这对我不起作用 这是我的代码: 价值等级: public class Values { public SimpleDo

我刚开始使用javafx,我想创建一个带有3列的
TableView
,在那里我可以显示一些值。 我用场景编辑器创建了
TableView
和列作为fxml文件。 然后,我创建了一个名为
Values
的类,该类具有与列匹配的特殊属性。 最后,我设置了可观察列表,其中的“值”对象作为表项。当我启动应用程序时,它只显示一个空表。 我现在在网上看了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<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标签psi;
@FXML标记α;
@FXML标签delta;
@FXML文本字段betafield;
@FXML文本字段lambdafield;
@FXML文本字段lambdasatfield;
@FXML表视图表;
@FXML观察义务人;
@FXML表列;
@FXML表列字母列;
@FXML表柱-三角柱;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
psicolumn.setCellValueFactory(新属性ValueFactory(“PSI”));
alphacolumn.setCellValueFactory(新属性ValueFactory(“ALPHA”));
deltacolumn.setCellValueFactory(新属性值工厂(“DELTA”));
}
@FXML
受保护的空按钮已按下(){
试一试{
Calculation cal=新计算(Double.parseDouble(betafield.getText()),Double.parseDouble(lambdafield.getText()),Double.parseDouble(lambdasatfield.getText());
alpha.setText(“alpha:“+”+cal.calculateAlpha());
delta.setText(“delta:“+”+calculateDelta());
psi.setText(“psi:”+“”+calculatePSI());
table.setItems(FXCollections.observearraylist(cal.calculateeValuariontable());
}捕获(NullPointerException e){
e、 printStackTrace();
}
}
以及我的FXML:


谢谢你的帮助

表示的构造函数参数,让
表示相同的
字符串,但首字母大写

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

  • 属性getter,即a方法
    someobserveValue属性()
  • getter方法,即方法
    SomeType get()
  • 这些都不存在于
    值中


    要使
    psicolumn
    工作,
    Values
    需要
    DoubleProperty PSIProperty()
    方法或
    double getPSI()
    方法。(与其他列的问题相同)

    您需要具有正确命名的值getter或属性getter。有关详细答案,请参阅链接问题。@sillyfly感谢您的回答。我检查了另一个主题并稍微更改了我的代码,但它并不能解决我的问题。如果您确定您有具有正确名称的值获取程序,但它仍然不起作用,请使用正确的代码更新您的问题。解决它!谢谢