У меня совершенно нелепая проблема.
Ситуация: у меня есть репортер. java класс, из которого я вызываю небольшой класс JFrame (status. java) с StatusBar в нем. Мой репортер. java имеет основную функцию, из которой я проверяю правильность. Если я это сделаю, все будет работать отлично.
А теперь странная вещь.
У меня есть класс JFrame (menu. java) с панелью меню, из которой я создаю экземпляр мой репортер класс. Когда я вызываю класс репортера оттуда, а не из его основной функции, класс прогресса открывается по запросу, но он отказывается отрисовывать. Все, что я получаю, - это пустую рамку, которую я даже не могу закрыть, поскольку она кажется застывшей. Процесс в репортере точно такой же ...
Я должен добавить, что задачи в классе репортера создают сотни таблиц в PDF-файл. Это впитывает всю мощность моего win10 на несколько минут.
Ах, еще одна информация: я создал все эти классы в NetBeans 11.
Вот мои фрагменты кода:
public class Progress extends javax.swing.JFrame {
JProgressBar progressBar = null;
public Progress (int maxvalue) {
initComponents();
progressBar = new JProgressBar(0, maxvalue);
jPanel1.add(progressBar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 340, 30));
progressBar.setVisible(true);
setVisible(true);
this.repaint();
}
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMaximumSize(new java.awt.Dimension(400, 100));
setMinimumSize(new java.awt.Dimension(400, 100));
setPreferredSize(new java.awt.Dimension(400, 100));
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 400, 100));
pack();
}
public void updProgress(int wert) {
progressBar.setValue(wert);
progressBar.setVisible(true);
this.setVisible(true);
repaint();
}
public void kill() {
this.setVisible(false);
this.dispose();
}
}
...
Вот вызовы из моего класса репортеров (см. поверх моего кода)
Progress bw = null;
bw = new Progress(table.getRowCount());
bw.updProgress(x);
bw.kill();
и я вызываю класс Reporter из моего меню с помощью
Reporter r = new Reporter();
Точно такую же строку можно найти и в основной функции. Как уже говорилось, когда я вызываю репортерский класс из его основной функции, он работает нормально. Когда я делаю тот же самый вызов класса репортера из класса меню, индикатор выполнения, похоже, зависает. Я попробовал это с простой JLabel вместо индикатора выполнения. Это также не оказывает. Должно быть, у JFrame есть проблема. Может быть, репортерский класс тоже на пределе и замерзает. У него нет GUI и он работает в фоновом режиме, поэтому я не могу это проверить.
У кого-нибудь есть идеи, почему это происходит ???