Я создал расширение JDialog
, имеющее один компонент, JProgressBar
, внутри области содержимого. JProgressBar
является общедоступным, потому что я хочу, чтобы значение было задано классом владельца. Когда я создаю новый диалог, панель контента не появляется вообще, в результате чего все, что за ней отображаются вместо индикатора выполнения:ContentPane и JProgressBar не отображается
Since I'm not allowed to use img tags...
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. Как вы можете сказать, код точно такой же. Проблема в том, что тест работает и отображается правильно. Я добавил весь код, связанный с другой реализацией окна диалога.
Я добавил эти строки после setStringPainted(), но перед добавлением его в панель содержимого: bar.setPreferredSize (новый размер (200, 100)); bar.setSize (200, 100); и он все еще не показывался. –