Я создал расширение JDialog
, которое имеет один компонент, JProgressBar
, внутри панели содержимого. JProgressBar
является общедоступным, потому что я хочу, чтобы значение было установлено классом владельца. Когда я создаю новый диалог, панель контента вообще не появляется, в результате чего все, что находится за ней, отображается вместо индикатора выполнения:
public class ProgressBarDialog extends JDialog {
public JProgressBar bar;
public ProgressBarDialog(Frame owner, String title) {
super(owner, title);
bar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);
bar.setValue(0);
bar.setStringPainted(true);
bar.setPreferredSize(new Dimension(200, 100));
getContentPane().setLayout(new BorderLayout());
getContentPane().add(bar, BorderLayout.CENTER);
setSize(200, 100);
setLocationRelativeTo(null);
setVisible(true);
toFront();
}
public void setProgress(int p) {
bar.setValue(p);
}
}
Код использования для этого ProgressBarDialog
выглядит следующим образом
ProgressBarDialog progBarDialog = new ProgressBarDialog(null,"Submitting");
//Stuff gets done
progBarDialog.setProgress(20);
//Stuff gets done
progBarDialog.setProgress(45);
//Stuff gets done
progBarDialog.setProgress(70);
//Stuff gets done
progBarDialog.setProgress(100);
//Stuff gets done
progBarDialog.dispose();
Я что-то упускаю, потому что это (я думал) довольно простая реализация?
По предложению camickr я создал тест SSCCE здесь: TestDialog.java . Как вы можете сказать, код точно такой же. Проблема в том, что тест работает и отображается правильно. Я добавил весь код, связанный с другой реализацией диалогового окна.