Неопределенная задержка анимации JProgressBar - PullRequest
0 голосов
/ 20 февраля 2019

Используя следующий код

package scrollbartest;

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

public class ScrollBarTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JProgressBar b = new JProgressBar();
            b.setIndeterminate(true);
            b.setPreferredSize(new Dimension(400, 20));
            f.add(b);
            f.pack();
            f.setVisible(true);
        });
    }
}

анимация выполнения "неопределенная" анимация очень запаздывает.Что я делаю не так?

Дополнительная информация:

  • ОС: debian 9.8
  • Кажется, что код работает нормально на других ОС (пробовал в Windows)
  • Происходит как с oracle JDK 1.8.0_201, так и с OpenJDK 1.8.0_181
  • Постоянное перемещение курсора мыши над основным JFrame позволяет плавно воспроизводить анимацию
  • Эффект изменяется с выбранным внешним видоми чувствую: GTK + лучше системного по умолчанию, но эффект все еще там

Из-за четвертого пункта я думаю, что это своего рода медленное "время обновления" ... это может быть возможно?

Спасибо за любую помощь!

ОБНОВЛЕНИЕ: Проведя некоторые исследования, я обнаружил, что анимацией неопределенного индикатора выполнения можно управлять, задавая некоторые параметры в текущем интерфейсе.:

ProgressBar.repaintInterval
ProgressBar.cycleTime

К сожалению, некоторые взгляды игнорируют первый параметр, в то время как другие - нет.Например, MetalLookAndFeel, похоже, игнорирует его, что приводит к запаздывающей анимации с временем перекраски около 0,5 секунд, в то время как NimbusLookAndFeel, похоже, использует его.

1 Ответ

0 голосов
/ 20 февраля 2019

Попробуйте добавить строку ниже, чтобы включить ускорение видео, если оно не включено в вашей ОС:

System.setProperty("sun.java2d.opengl", "true");
...