Обновить форму из другой способ

У меня есть .файл CSV, который полон пиксельные данные от 60000 рисованных цифр (набор данных mnist рукописных цифр). Функция называется поезд() вызывается, когда нажата кнопка. Изнутри поезд() функция, я хотел бы каждого из 60000 знаков, отображаемых на экране. Код работает прекрасно, я просто не могу получить форму, чтобы обновить в поезд() метод.

Я проверил код, и это 100% работает, как задумано. Я просто не могу получить форму, чтобы обновить в то время как в поезде (функция).

    public void trainMenu() {
        JButton trainBtn = new JButton("Train");
        JLabel otp = new JLabel();
        JPanel bottomBar = new JPanel();
        trainImage = new ImageIcon();
        JLabel imageLabel = new JLabel(this.trainImage);

        bottomBar.setLayout(new GridLayout(1,2,5,5));
        bottomBar.add(trainBtn);
        bottomBar.add(otp);
        this.frame.getContentPane().add(BorderLayout.CENTER,imageLabel);
        this.frame.getContentPane().add(BorderLayout.SOUTH, bottomBar);
        SwingUtilities.updateComponentTreeUI(this.frame);

        ActionListener trainListener = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == trainBtn) {
                    train();
                }
            }
        };

        trainBtn.addActionListener(trainListener);
    }

    void train() {
        BufferedImage bImage;
        //all 60000 numbers are extracted from a .csv file
        //i omitted everything from this function because it's not important for this question
                ...

                //this line is run 60000 times. it displays the converted pixel data (very fast) the code definitely works, it simply won't update.
                this.trainImage.setImage(bImage);
                SwingUtilities.updateComponentTreeUI(frame);
            }
        }


    }

    public static void main(String[] args) {
        new NetGUI();
    }
}

Когда я нажимаю кнопку "поезд", интерфейс зависает и не отвечает до тех пор, пока поезд() способ это сделать.

0
2019-09-18 23:10:22
источник
2 ответа

Если вы выполните эту команду "рН-принеси-клякса": "^0.10.13",установите эту версию работал для меня,если вы установите еще один ваше приложение разбился/купировались.

+0
2019-09-18 23:26:40

Модули Gradle в не работать. Модуль Java-это скомпилированные классы, плюс ресурсы. Вы можете только исключить зависимости (т. е. все модули или банки) через свои попытки исключить способ. Нельзя исключить определенную часть (например, каталог) зависимости

На мой взгляд кроме вещей-это анти-паттерн. Я предлагаю ломать вещи на более мелкие куски и соединять их вместе (т. е. "включить" вместо "исключить")

Поэтому я предлагаю вам создать ":совместный проект", обе "А" и "Б" уже как зависимость. Все общие вещи идет в общий и любой конкретной вещи идет в A или B

+0
2019-09-18 23:32:49

Посмотрите другие вопросы по меткам