【问题标题】:Java Method creation fails to be read even if working correctlyJava 方法创建即使工作正常也无法读取
【发布时间】:2014-10-21 20:05:05
【问题描述】:

我想创建一个方法,我可以简单地从 Swing 表单中的文本字段中获取文本。然而,试图让它被我的“if 语句”之一识别最终会出现一个错误,告诉我它无法找到该符号,尽管它已被定义。我还想创建更简洁的代码,因为我这样做的方式似乎相当重复和混乱;有没有办法缩短重复次数并将它们也称为变量?

    public class TextGrabber {
    int [] grabText = {Integer.parseInt(DigitValue.getText())};
    }    

int digit1 = TextGrabber;
    if (digit1 == 1) {
        Digi1.setVisible(false);
        Digi2.setVisible(false);
        Digi3.setVisible(true);
        Digi4.setVisible(false); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(false);
    }

    int digit2 = Integer.parseInt(DigitValue.getText());
    if (digit2 == 2) {
        Digi1.setVisible(true);
        Digi2.setVisible(false);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(true);
        Digi6.setVisible(false);
        Digi7.setVisible(true);
    }

    int digit3 = Integer.parseInt(DigitValue.getText());
    if (digit3 == 3) {
        Digi1.setVisible(true);
        Digi2.setVisible(false);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(true);
    }

    int digit4 = Integer.parseInt(DigitValue.getText());
    if (digit4 == 4) {
        Digi1.setVisible(false);
        Digi2.setVisible(true);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(false);
    }

    int digit5 = Integer.parseInt(DigitValue.getText());
    if (digit5 == 5) {
        Digi1.setVisible(true);
        Digi2.setVisible(true);
        Digi3.setVisible(false);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(true);
    }

    int digit6 = Integer.parseInt(DigitValue.getText());
    if (digit6 == 6) {
        Digi1.setVisible(true);
        Digi2.setVisible(true);
        Digi3.setVisible(false);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(true);
        Digi6.setVisible(true);
        Digi7.setVisible(true);
    }

    int digit7 = Integer.parseInt(DigitValue.getText());
    if (digit7 == 7) {
        Digi1.setVisible(true);
        Digi2.setVisible(false);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(false);
    }

    int digit8 = Integer.parseInt(DigitValue.getText());
    if (digit8 == 8) {
        Digi1.setVisible(true);
        Digi2.setVisible(true);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(true);
        Digi6.setVisible(true);
        Digi7.setVisible(true);
    }

    int digit9 = Integer.parseInt(DigitValue.getText());
    if (digit9 == 9) {
        Digi1.setVisible(true);
        Digi2.setVisible(true);
        Digi3.setVisible(true);
        Digi4.setVisible(true); //This textfield will be hidden
        Digi5.setVisible(false);
        Digi6.setVisible(true);
        Digi7.setVisible(true);
    }
}                                         

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)      {                                         
    // TODO add your handling code here:

    int AddOneDigit = Integer.parseInt(DigitValue.getText());
    AddOneDigit = AddOneDigit + 1;
    String NewSet = Integer.toString (AddOneDigit);
    DigitValue.setText(NewSet);        
    ShowDigitActionPerformed(evt);

    int check = Integer.parseInt(DigitValue.getText());
    if (check >= 10) {
        check = 0;
        String CheckS = Integer.toString (check);
        DigitValue.setText(CheckS);
        Digi1.setVisible(true);
        Digi2.setVisible(true);
        Digi3.setVisible(true);
        Digi4.setVisible(false); //This textfield will be hidden
        Digi5.setVisible(true);
        Digi6.setVisible(true);
        Digi7.setVisible(true);     
}                              

【问题讨论】:

    标签: java arrays swing methods


    【解决方案1】:

    将掩码存储为数组,然后用类似的东西构建它

    int digit = Integer.parseInt(DigitValue.getText());
    boolean[][] mask = { { false, false, true, false, false, true, false },
            { true, false, true, true, true, false, true },
            { true, false, true, true, false, true, true },
            { false, true, true, true, false, true, false },
            { true, true, false, true, false, true, true },
            { true, true, false, true, true, true, true },
            { true, false, true, true, false, true, false },
            { true, true, true, true, true, true, true },
            { true, true, true, true, false, true, true } };
    boolean[] digits = mask[digit - 1];
    Digi1.setVisible(digits[0]);
    Digi2.setVisible(digits[1]);
    Digi3.setVisible(digits[2]);
    Digi4.setVisible(digits[3]);
    Digi5.setVisible(digits[4]);
    Digi6.setVisible(digits[5]);
    Digi7.setVisible(digits[6]);
    

    我还注意到您没有数字 '0' 的映射。

    【讨论】:

    • 很抱歉打扰您,但我对 Java 还很陌生。您介意将掩码存储为数组来扩展您的意思吗?我假设您编写的代码将进入 Swing Form 的主类或公共类,对吗?
    • 别担心我的朋友我想通了 :) 谢谢你的帮助!
    • 我什至会使用位掩码,例如 0b001_0010 - 它可以将整个掩码表示为 8 个字节,可以说使其更具可读性(尽管它需要位移位然后访问)并且毫无疑问地使它更容易编辑。
    【解决方案2】:

    我不确定这是否会对您有很大帮助,但您也许可以通过创建一个方法来清理您的一些代码。您可以创建一个方法来声明“Digi”的可见性。像这样的方法可能类似于下面的代码。

    代码:

    public void multipleVisibleSet(boolean 1Visible, boolean 2Visible, boolean 3Visible, 
                  boolean 4Visible, boolean 5Visible, boolean 6Visible, boolean 7Visible){
      Digi1.setVisible(1Visible);                                 //Add as many as you need
      Digi2.setVisible(2Visible);
      Digi3.setVisible(3Visible);
      Digi4.setVisible(4Visible);
      Digi5.setVisible(5Visible);
      Digi6.setVisible(6Visible);
      Digi7.setVisible(7isible);
    }
    

    【讨论】:

    • 感谢您的帮助,但是使用您的代码会使 java 要求一个标识符,我认为标识符将是(在这种情况下)public void multipleVisibleSet (boolean [] args){ }
    猜你喜欢
    • 2022-01-20
    • 2019-03-15
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多