java-анимация индикатора выполнения

Итак, я гуглил и искал это, но я мог найти что угодно: я вызвал этот метод в своем коде

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception exc) {
        System.out.print("failed to load look and feel");
    }

Затем я добавил JProgressBar с именем progressBar и вызвал этот код, когда я нажимаю кнопку в своем графическом интерфейсе:

    progressBar.setBorderPainted(true);
    progressBar.setValue(progressBar.getValue()+1);
    Progresslabel.setText("Progress... "+progressBar.getString());

Progresslabel — это просто метка для отображения прогресса. Теперь, когда я это делаю, индикатор выполнения выглядит так:

http://i.imgur.com/gXp5ByH.png

вместо этого в других приложениях:

http://i.imgur.com/M61Cd59.png

Видите, мой очень прямоугольный и заполняет только часть полосы прогресса, а не снаружи? Я хочу знать, есть ли способ использовать внешний вид системы по умолчанию, но с возможностью использовать индикаторы выполнения, и чтобы они выглядели так же, как в других программах. Есть ли способ сделать это? Спасибо.


person user2016463    schedule 08.02.2013    source источник
comment
Попробуйте позвонить SwingUtilities.updateComponentTreeUI(JFrame);, чтобы убедиться, что он правильно изменил LAF.   -  person    schedule 09.02.2013
comment
спасибо, но я уже реализовал это в своем коде. Пробовал добавлять в разные места, но безрезультатно. Спасибо, в любом случае!   -  person user2016463    schedule 09.02.2013


Ответы (1)


Вы можете использовать SWT, чтобы отображались собственные виджеты. Swing progress делает все возможное, чтобы эмулировать виджеты ОС, но они не настоящие. Отсутствие анимированных индикаторов выполнения Windows — один из недостатков Swing.

С другой стороны, SWT использует настоящие родные виджеты, которые выглядят очень красиво.

person Thor Lancaster    schedule 21.06.2017