Как скрыть jLabel на основе ввода JOptionpane - PullRequest
0 голосов
/ 02 декабря 2018

Обычно я нажимаю кнопку JButton (unipedal), и она появляется с панелью JOptionPane с несколькими полями JTextFields.Я хочу взять строковые входные данные этих JTextFields и:

  1. Проверьте, чтобы убедиться, что строковые значения находятся в HashMap, который у меня есть (posTasks.taskType), который должен быть
  2. Затем создайте новый объект UNIPEDALImpl с этими строками в качестве параметров
  3. Используйте строки в качестве ключей для другого HashMap типа (jLabelsHM), чтобы скрыть JLabel, если ключ этого HashMap возвращает true, когда используется в качестве ключа вposTasks.completedTasks.

Я получаю несколько ошибок и не могу понять, почему.

unipedal.addActionListener(new java.awt.event.ActionListener() {

    @SuppressWarnings("null")
    @Override
    public void actionPerformed(java.awt.event.ActionEvent evt) {

        String robotName = null;
        String firstTask = null;
        String secondTask = null;
        String thirdTask = null;
        String fourthTask = null;
        String fifthTask = null;

        JPanel inputBox = new JPanel();
        inputBox.setLayout(new GridLayout(0, 2, 3, 4));

        JTextField name = new JTextField(15);
        JTextField task1 = new JTextField(15);
        JTextField task2 = new JTextField(15);
        JTextField task3 = new JTextField(15);
        JTextField task4 = new JTextField(15);
        JTextField task5 = new JTextField(15);

        inputBox.add(new JLabel("Robot's Name:"));
        inputBox.add(name);

        inputBox.add(new JLabel("Task 1:"));
        inputBox.add(task1);

        inputBox.add(new JLabel("Task 2:"));
        inputBox.add(task2);

        inputBox.add(new JLabel("Task 3:"));
        inputBox.add(task3);

        inputBox.add(new JLabel("Task 4:"));
        inputBox.add(task4);

        inputBox.add(new JLabel("Task 5:"));
        inputBox.add(task5);

        int option = JOptionPane.showConfirmDialog(middle,inputBox, 
       "Please fill all the fields", JOptionPane.OK_CANCEL_OPTION);

        if (option == JOptionPane.OK_OPTION) {

             robotName.equals(name.getText());
             firstTask.equals(task1.getText());
             secondTask.equals(task2.getText());
             thirdTask.equals(task3.getText());
             fourthTask.equals(task4.getText());
             fifthTask.equals(task5.getText());


            if (!posTasks.taskType.containsKey(firstTask)||!posTasks.taskType.containsKey(secondTask)||!posTasks.taskType.containsKey(thirdTask)||!posTasks.taskType.containsKey(fourthTask)||!posTasks.taskType.containsKey(fifthTask)) {
                throw new IllegalArgumentException("One or more of the tasks you have requested are invalid. Please choose tasks from the list provided and check your spelling!");
            }
            try {
                UNIPEDALImpl unipedal = new UNIPEDALImpl(firstTask, secondTask, thirdTask, fourthTask,
                        fifthTask);

                LinkedList<String>tasksList = new LinkedList <String>();
                tasksList.add(firstTask);
                tasksList.add(secondTask);
                tasksList.add(thirdTask);
                tasksList.add(fourthTask);
                tasksList.add(fifthTask);

                for (String task : tasksList) {

                    if (posTasks.completedTasks.get(task) == true) {
                        throw new IllegalArgumentException(task + "has already been completed. Please choose a different task or use 'refresh' if you want the task to be completed again");
                    }

                    unipedal.time += unipedal.taskTimes.get(task);
                    posTasks.completedTasks.put(task, true);
                    unipedal.tasksList.remove(task);
                    unipedal.taskCounter++;
                }

            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }

            for (Entry<String, JLabel> entry : jLabelsHM.entrySet()) {
                if(posTasks.completedTasks.get(entry.getKey()) == true) {
                    jLabelsHM.get(entry.getKey()).setVisible(false);
                }
            }
        }
    }
});

1 Ответ

0 голосов
/ 02 декабря 2018

Прежде всего, у нас нет класса UNIPEDALImpl, поэтому с представлением черного ящика я не могу сказать вам, есть ли ошибка в этой части.

О проблемах в вашем коде.сначала кажется, что вы хотите заполнить переменную методом equals, что неверно, вам нужно использовать = sign .

метод equals предназначен для сравнения двух объектов без присваивания переменных.

robotName = name.getText();
firstTask = task1.getText();
secondTask = task2.getText();
thirdTask = task3.getText();
fourthTask = task4.getText();
fifthTask = task5.getText();

, затем вы переходите оттуда.

...