В настоящее время у меня есть Java-программа с swing gui, которая позволяет пользователю выбирать различные файлы (xsl-fo и xml) и создает PDF-файлы с помощью Render X. Я пытаюсь на некоторое время получить поп-музыку чтобы JFrame отображался при нажатии кнопки, которая затем показывала индикатор выполнения или метку, чтобы информировать пользователя о ходе. Однако при создании нового фрейма он будет казаться черным или без компонентов, которые затем отображаются после завершения процессов.Показывать/обновлять компоненты до завершения процесса
private void RunButtonActionPerformed(java.awt.event.ActionEvent evt) {
ExecutorService executor = Executors.newFixedThreadPool(8);
//for reach file to process)
for (int i = 0; i < count; i++) {
Runnable worker = new ProcessThreader(conf, i);
executor.execute(worker);
}
executor.shutdown();
JFrame PercentageFrame = new JFrame();
PercentageFrame.setVisible(true);
PercentageFrame.setSize(200, 200);
PercentageFrame.repaint();
while (!executor.isTerminated()) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
NarrowOptionPane.errorMessage("Interrupted: ", ex.getMessage());
}
}
System.out.println("Complete");
}
Кнопка запуска находится в JPanel, который расположен в JFrame и основная рама конкретизируется в главном методе и завернутый в Invoke позже метод
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new MainFrame("PDF Producer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(710, 530);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
}
});
}
Я нахожусь довольно новый для потоки/исполнителей и java swing, так что легко! Спасибо
удалить цикл while, он должен помочь вам, также обновите свой PercentageFrame из 'ProcessThreader'. – alex2410