как отобразить диалог загрузки в центре экрана приложения? - PullRequest
1 голос
/ 21 февраля 2011

Я хочу знать, как отобразить диалог загрузки в центре экрана приложения. Неопределенный индикатор выполнения.

Ответы [ 4 ]

2 голосов
/ 21 февраля 2011

Если вы говорите о JDialog, после вызова pack () для него вызовите setLocationRelativeTo (null), чтобы отцентрировать его.

1 голос
/ 21 февраля 2011

Вот как я обычно показываю индикатор выполнения «загрузка ...». Сама загрузка должна происходить в фоновом потоке, чтобы убедиться, что индикатор выполнения продолжает обновляться. Рамка с индикатором выполнения будет показана в центре экрана.

public static void main(String[] args) throws Throwable {

    final JFrame frame = new JFrame("Loading...");
    final JProgressBar progressBar = new JProgressBar();
    progressBar.setIndeterminate(true);
    final JPanel contentPane = new JPanel();
    contentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    contentPane.setLayout(new BorderLayout());
    contentPane.add(new JLabel("Loading..."), BorderLayout.NORTH);
    contentPane.add(progressBar, BorderLayout.CENTER);
    frame.setContentPane(contentPane);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);


    Runnable runnable = new Runnable() {
        public void run() {
            // do loading stuff in here
            // for now, simulate loading task with Thread.sleep(...)
            try {
                System.out.println("Doing loading in background step 1");
                Thread.sleep(1000);
                System.out.println("Doing loading in background step 2");
                Thread.sleep(1000);
                System.out.println("Doing loading in background step 3");
                Thread.sleep(1000);
                System.out.println("Doing loading in background step 4");
                Thread.sleep(1000);
                System.out.println("Doing loading in background step 5");
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // when loading is finished, make frame disappear
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    frame.setVisible(false);
                }
            });

        }
    };
    new Thread(runnable).start();
}
1 голос
/ 21 февраля 2011

Отображение диалогового окна загрузки в центре экрана приложения.

dialog.setLocationRelativeTo(...);

Неопределенный индикатор выполнения.

Прочтите раздел из учебника по Swing на Как использовать индикаторы выполнения

1 голос
/ 21 февраля 2011

Из документации :

JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);

Это создаст индикатор выполнения. Чтобы отцентрировать его, вы должны взглянуть на различные виды менеджеров компоновки в Java. Без примеров существующего кода трудно дать более точный ответ на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...