2013-05-03 2 views
-1
private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    if ("PDF(.pdf)".equals(jComboBox1.getSelectedItem())) { 
       query = queryPane.getText(); 
       filePath = selectedFolder.getText(); 
       new DataBaseToPDF(filePath, query); 
      } 
     } 

Это фрагмент кода для экспорта данных в файл pdf (DataBaseToPDF(filePath,query)) при нажатии кнопки. Пока процесс выполняется в фоновом режиме, я хотел бы отобразить индикатор выполнения до завершения экспорта. Я столкнулся со многими примерами, которые рассказывают, как создать JProgressBar, но никто из них не говорит, как связать его с запущенным Java-приложением.ссылка с индикатором выполнения

Сообщите мне, как это сделать.

+1

ли инструмент, который в настоящее время sun ** дать ** любое указание прогресса до его завершения? Многие этого не делают, и в этом случае это невозможно. Просто покажите пользователю неопределенный индикатор выполнения и сделайте с ним. * «Скажи мне, как это сделать». * Если вы приказываете мне делать что-то, мне нужно $. Как насчет того, что вы перефразируете это как вопрос типа «Как это сделать?». –

+2

Ваша задача (экспорт данных в PDF) занимает много времени. Поскольку качание работает на одном (EDT) потоке, ваш GUI будет «заморожен» во время этого процесса (JProgressBar ничего не покажет до завершения процесса). Чтобы укоротить: взгляните на этот вопрос: http://stackoverflow.com/questions/4637215/can-a-progress-bar-be-used-in-a-class-outside-main/4637725#4637725 И на SwingWorker : http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html –

+0

@ AndrewThompson- Мне жаль, что я груб. Я не это имел в виду. И да, в качестве указателя я добавил JOptionPane, который дает сообщение, когда экспорт завершен. – Ritesh

ответ

4
  • использование ProgressMonitorInputStream, более Oracle учебник How to Use Progress Bars

  • или создать собственный индикатор прогресса,

    1. Файл имеет размер в байтах

    2. разделить этот размер до 100, переместить с ходом aftre buffer записать байты в файл

    3. уведомления все обновления качаться GUI должно быть сделано на EDT, завернутые в invokeLater

    4. путем переопределения публиковать()/прогресс() с помощью SwingWorker