2011-02-21 3 views

ответ

1

documentation От:

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

Это позволит создать индикатор прогресса. Чтобы сосредоточить его, вы должны взглянуть на different kinds of layout managers в java. Без каких-либо примеров вашего существующего кода трудно дать более точный ответ на ваш вопрос.

1

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

dialog.setLocationRelativeTo(...); 

Неопределенный прогресс бар.

Прочитайте раздел из свинга учебника по How to Use Progress Bars

+0

+1 Лучший ответ на этот вопрос. –

2

Если вы говорите о JDialog, после вызова пакета() на нем, вызовите setLocationRelativeTo (нуль) в центре.

0

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

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(); 
} 
+0

Спасибо. Ты действительно помог мне. Однако я бы добавил одну строку: 'frame.dispose()', чтобы освободить ресурсы фрейма после их скрытия. – Hobo

Смежные вопросы