Автообновление панели JPanel - PullRequest
1 голос
/ 31 декабря 2011

Я работаю над программой, которая должна автоматически настраивать бар в зависимости от значения, которое я прочитал из файла или массива. Я поместил два JPanel друг в друга, один статический, а другой должен получить свои значения из массива / файла. Моя проблема в том, что когда вы читаете массив или файл, я хочу обновить параметры JPanel. ниже мой пример кода.

int myvalues[] = {120,130,140,150,160,170,180};

for(int i = 0; i <= myvalues.length-1; i++){
    guagePanel.setSize(10,myvalues[i]);
    Thread.sleep(1000);
}

Но приведенное выше не обновляет страницу.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Вы должны обновить свою панель в ветке рассылки событий.Если вы также позвоните Thread.sleep на EDT, ваша панель не может быть перекрашена, так как поток спит.

Если вы хотите обновлять размер каждую секунду, вы можете использовать Timer (версия Swing, а не версия java.util) и обновите размер вашей панели в ActionListener этого таймера.

Не уверен, что это опечатка в вашем коде, и вы имели в виду 'gauge 'iso' guage ', но в этом случае есть несколько действительно хороших примеров датчиков , доступных в сети

2 голосов
/ 31 декабря 2011

Не спать в потоке отправки событий . Вместо этого используйте SwingWorker в сочетании с JProgressBar, как показано в Как использовать индикаторы выполнения . Если вы читаете из файла, ProgressMonitorInputStream может быть удобным.

...