Передача значений, введенных из JDialog в два класса, вызывает два запроса JDialog - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь передать входные значения из JDialog, которые хранятся в массиве из класса UserInput, в классы MainClass и CheckUserInput.Однако для этого мне нужно вызвать метод promptUser из класса UserInput, который принимает пользовательский ввод.Но когда я делаю это в обоих классах, я получаю два приглашения JDialog.Я не уверен, как еще это сделать.

Любая помощь приветствуется.Я новичок в Java и программировании.Спасибо, что нашли время, чтобы прочитать мой вопрос.

MainClass

public class MainClass {

    public static void main(String[] args) {

        UserInput input = new UserInput();
        CheckUserInput checkError = new CheckUserInput();

        int passedUserInput[] = input.getInput();
        input.promptUser();
        input.getInput();
        System.out.println(passedUserInput[0]);

        checkError.inputCheck();
        String check = checkError.getError();

        if (check == ("failEven")) {
            System.out.println("You entered an odd number");
        } else if (check == "failRange") {
            System.out.println("Please enter a number between 2 and 20");
        } else if (check == "checkpassed") {
            System.out.println("All cleared");
        }

    }

}

CheckUserInputClass

public class CheckUserInput {
    String errorMessage = "";

    public void inputCheck() {

        UserInput input = new UserInput();
        input.promptUser();// unless I do this I cannot pass the value to this method but when I also need
                            // to do this in the MainClass class
                            // and this cause two jDialog prompts

        int[] checkUserInput = input.getInput();

        if (!(checkUserInput[1] <= 5 && checkUserInput[1] % 2 == 0)) {

            errorMessage = "failEven";
        } else if (checkUserInput[0] < 2 || checkUserInput[0] > 20) {

            errorMessage = "failRange";

        } else if ((checkUserInput[0] >= 2 || checkUserInput[0] <= 20)
                && (checkUserInput[1] <= 5 && checkUserInput[1] % 2 == 0)) {
            errorMessage = "checkpassed";
        }

    }

    public String getError() {
        return errorMessage;
    }
}

UserInput class

    import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class UserInput {
    int[] userInput = new int[2];
    String[] error = new String[2];
    String s;

    JPanel panel = new JPanel();
    JTextField firstNumber = new JTextField(10);
    JTextField secondNumber = new JTextField(10);
    JLabel fnLabel = new JLabel("Enter first number: ");
    JLabel snLabel = new JLabel("Enter second number: ");

    public void promptUser() {
        panel.add(fnLabel);
        panel.add(firstNumber);
        panel.add(snLabel);
        panel.add(secondNumber);
        int ok = JOptionPane.showConfirmDialog(null, panel, "Testing", JOptionPane.OK_CANCEL_OPTION);

        if (ok == JOptionPane.CANCEL_OPTION || ok == JOptionPane.CLOSED_OPTION) {

        } else {
            s = "go";

        }
    }

    public int[] getInput() {

        if (s == "go") {
            userInput[0] = Integer.parseInt(firstNumber.getText());
            userInput[1] = Integer.parseInt(secondNumber.getText());
        }
        return userInput;
    }

}
...