无法解析“String”中的“setVisible”方法(Java)

问题描述 投票:0回答:1

我正在编写一个代码,允许用户输入折扣代码,该代码将应用于价格,这将扣除 10% 的小计。

我想做的是不要在 GUI 上显示折扣代码和金额,除非已应用折扣代码(会弹出一个窗口,完成后可以关闭并且信息就在那里) .

到目前为止,有效的是折扣金额。因此,打开程序时并不明显,当折扣代码匹配并应用时,折扣金额就在那里。

然而,这就是我遇到麻烦的地方。我正在尝试使用折扣代码做同样的事情。例如,如果您输入“SALE10”作为代码,则 GUI 将显示已输入且有效的代码以及已从小计中扣除的金额。

我试图通过使用 FXML 上的 setVisible 布尔值和可见性标签来做到这一点。

discountCode.setVisible(true);
discountAmount.setVisible(true);

我在函数中有这些,但

discountCode.setVisible(true);
下面有一条红线,给出的错误是无法解析“String”中的方法“setVisible”,我不确定这意味着什么。我更困惑的是,discountAmount 有效,但 discountCode 无效

这是它的完整功能

public void applyDiscount(String discountCode){
    if("SALE10".equals(discountCode)){
        BigDecimal preDiscount = new BigDecimal(subtotalSum.getText().substring(1));
        BigDecimal discountAmountValue = preDiscount.multiply(new BigDecimal("0.10"));
        BigDecimal newSubtotal = preDiscount.subtract(discountAmountValue);
        subtotalSum.setText("$" + newSubtotal.setScale(2, RoundingMode.HALF_UP));

        BigDecimal taxRate = new BigDecimal("0.12");
        BigDecimal newTotalPrice = newSubtotal.multiply(BigDecimal.ONE.add(taxRate));
        totalPrice.setText("$" + newTotalPrice.setScale(2, RoundingMode.HALF_UP));

        discountAmount.setText("-$" + discountAmountValue.setScale(2, RoundingMode.HALF_UP));

        discountCode.setVisible(true);
        discountAmount.setVisible(true);
    } else {
        discountCode.setVisible(false);
        discountAmount.setVisible(false);
        //will keep the text hidden if code is invalid
    }
}

这是包含这些文本的 FXML 部分

      <Text fx:id="discountCode" layoutX="110.0" layoutY="223.0" strokeType="OUTSIDE" strokeWidth="0.0" text="-$9.99" wrappingWidth="58.5" visible="false"/>
  <Text fx:id="discountAmount" layoutX="110.0" layoutY="223.0" strokeType="OUTSIDE" strokeWidth="0.0" text="-$9.99" wrappingWidth="58.5" visible="false"/>
java string javafx
1个回答
0
投票

您的班级可能有字段

discountAmount
discountCode

在您的方法中,您有一个也名为

discountCode
的参数,并且该参数隐藏了该字段(即您无法再仅通过名称
discountCode
访问该字段)。

您可以重命名参数或通过在名称前添加

this.
:

来访问该字段
public void applyDiscount(String discountCode){
    if("SALE10".equals(discountCode)){
        BigDecimal preDiscount = new BigDecimal(subtotalSum.getText().substring(1));
        BigDecimal discountAmountValue = preDiscount.multiply(new BigDecimal("0.10"));
        BigDecimal newSubtotal = preDiscount.subtract(discountAmountValue);
        subtotalSum.setText("$" + newSubtotal.setScale(2, RoundingMode.HALF_UP));

        BigDecimal taxRate = new BigDecimal("0.12");
        BigDecimal newTotalPrice = newSubtotal.multiply(BigDecimal.ONE.add(taxRate));
        totalPrice.setText("$" + newTotalPrice.setScale(2, RoundingMode.HALF_UP));

        discountAmount.setText("-$" + discountAmountValue.setScale(2, RoundingMode.HALF_UP));

        this.discountCode.setVisible(true); // change here
        discountAmount.setVisible(true);
    } else {
        this.discountCode.setVisible(false); // change here
        discountAmount.setVisible(false);
        //will keep the text hidden if code is invalid
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.