Несколько окон JInternalFrame перетаскиваются медленно

На Mac возникает большая задержка, когда я создаю несколько окон JInternalFrame в JFrame и перетаскиваю их.

https://i.sstatic.net/Av15A.gif

возникает большая задержка, когда я создаю несколько окон JInternalFrame в JFrame и перетаскиваю их

public static void main(String... args) {
    System.out.println("Hello World!");
    JFrame mainFrame = new JFrame("Hello");
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setSize(1920, 1080);

    JDesktopPane desktopPane = new JDesktopPane();
    mainFrame.setContentPane(desktopPane);


    for (int i = 0; i< 10; i++) {
        JInternalFrame internalFrame = new JInternalFrame("Hello");
        internalFrame.setPreferredSize(new Dimension(1800, 1000));
        desktopPane.add(internalFrame);
        internalFrame.setVisible(true);
        internalFrame.pack();
        // internalFrame.setDebugGraphicsOptions(DebugGraphics.LOG_OPTION);
    }

    mainFrame.setVisible(true);
}

Нет проблем, если включена отладка.

internalFrame.setDebugGraphicsOptions(DebugGraphics.LOG_OPTION);

Я тестировал Java 15 и Java 8, и у обеих возникла эта проблема.

Кто-нибудь знает, почему при перетаскивании окна JInternalFrame возникает серьезная задержка?

Кажется, у меня работает нормально. Вы визуализируете эти изображения?

MadProgrammer 12.04.2024 10:07

@MadProgrammer Нет, изображения не имеют значения, я не визуализирую эти изображения, я просто создаю несколько пустых JInternalFrame, но при перетаскивании JInternalFrame возникает очень большая задержка.

user21110533 12.04.2024 10:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
for (int i = 0; i< 10; i++) {
    JInternalFrame internalFrame = new JInternalFrame(String.valueOf(i));
    internalFrame.setPreferredSize(new Dimension(1800, 1000));
    desktopPane.add(internalFrame);
    internalFrame.setVisible(true);
    internalFrame.pack();
    internalFrame.setOpaque(true);
    // internalFrame.setDebugGraphicsOptions(DebugGraphics.LOG_OPTION);
}

Добавление internalFrame.setOpaque(true); может облегчить эту проблему.

Другие вопросы по теме