2014-10-21 2 views
0

Я хочу создать метод, в котором я могу просто захватить текст из текстового поля в моей форме Swing. Однако попытка заставить его распознаваться одним из моих «операторов if» заканчивается ошибкой, сообщающей мне, что она не может найти символ, несмотря на то, что он определен. Я также хочу создать более чистый код, так как я делаю это, похоже, довольно повторяющийся и беспорядочный; Есть ли способ сократить повторения и назвать их переменными?Создание Java-метода не может быть прочитано даже при правильной работе

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);  
}        

ответ

0

Хранить маски, как массив, а затем построить его с чем-то вроде

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'.

+0

Извините, что беспокою вас, но я довольно новыми для Java. Не могли бы вы расширить доступ к тому, что вы имели в виду, сохраняя маски как массив? Код, который вы написали, я предполагаю, либо войдет в основной класс, либо в открытый класс формы Swing, я прав? –

+0

Не беспокойтесь, мой друг, я это понял :) Спасибо за вашу помощь! –

+0

Я даже зашел так далеко, чтобы использовать с ним бит-маски, например 0b001_0010 - он позволяет выражать всю маску в виде 8 байтов, возможно, сделать ее более читаемой (хотя для этого требуется бит-сдвиг) неоспоримо, что делает его более легко редактируется. – vaxquis

0

Я не уверен, что это поможет вам, но вы можете очистить часть своего кода, создав метод. Вы можете создать метод для объявления видимости «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); 
} 
+0

Спасибо за вашу помощь, но используя ваш код, я хочу, чтобы java запрашивал идентификатор, я был бы прав, считая, что идентификатор будет (в данном случае) ** public void multipleVisibleSet (boolean [] args) { } * * –

Смежные вопросы