为了账号安全,请及时绑定邮箱和手机立即绑定

是否有替代方法来检查 javafx 应用程序中的许多空白字段?

是否有替代方法来检查 javafx 应用程序中的许多空白字段?

梵蒂冈之花 2023-09-20 17:02:31
我是java(以及一般编程)的新手,并且正在通过将基本电子表格转换为javafx应用程序来学习。为此,我使用:Java & JavaFX 12 FXML & GUI 的 scenebuilder大约有 10 个输入字段,并且它们不能为空(应用程序崩溃,因为 getText 似乎在空白字段上失败)。我编写了堆叠的 if 语句来检查空白字段,然后打印错误消息(如果有),并返回以停止进程而不会使应用程序崩溃。switch 语句似乎并不比 if 语句好多少。有没有一种方法可以用更少的代码行来完成它?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您需要以某种方式将一个字段与一个字符串关联起来。这需要您为每个TextFields 添加一些代码,无论是userData在 fxml 中设置 ,还是将TextField和的组合存储String在控制器initialize方法中合适的数据结构中。


这样的数据结构可以是LinkedHashMap:


private final Map<TextField, String> fieldStrings = new LinkedHashMap<>();


@FXML

private void initialize() {

    fieldStrings.put(desShear, "Design shear");

    fieldStrings.put(boltSize, "Bolt size");

    fieldStrings.put(tensStrengthBolt, "Bolt strength");

    fieldStrings.put(noBolts, "Number of bolts");

    fieldStrings.put(shearPlanes, "Number of shear planes");

    fieldStrings.put(edgeDist, "Edge distance");

    fieldStrings.put(plyThick, "Ply thickness");

    fieldStrings.put(tensStrengthPly, "Ply strength");

    fieldStrings.put(phiBolt, "Bolt phi factor");

    fieldStrings.put(phiPly, "Ply phi factor");

}


private double getFieldValue(TextField field) {

    return Double.parseDouble(field.getText());

}


public void run(ActionEvent clickRun) {


    String errorField = fieldStrings.entrySet().stream()

                                     .filter(entry -> entry.getKey().getText().isBlank())

                                     .map(Map.Entry::getValue)

                                     .findFirst().orElse(null);


    if (errorField != null) {

        outputMsg.setText(errorField + " field is blank");

        return;

    }


    //Get field values

    double desSHEAR = getFieldValue(desShear);

    double boltSIZE = getFieldValue(boltSize);

    double tensStengthBOLT = getFieldValue(tensStrengthBolt);

    double noBOLTS = getFieldValue(noBolts);

    double shearPLANES = getFieldValue(shearPlanes);

    double edgeDIST = getFieldValue(edgeDist);

    double plyTHICK = getFieldValue(plyThick);

    double tensStrengthPLY = getFieldValue(tensStrengthPly);

    double phiBOLT = getFieldValue(phiBolt);

    double phiPLY = getFieldValue(phiPly);



    //Bolt shear calculation



}


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 44 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信