多个JInternalFrame窗口拖动速度慢

问题描述 投票:0回答:1

在 Mac 上,当我在 JFrame 中创建多个 JInternalFrame 窗口并拖动它们时,会出现很大的延迟。

https://i.stack.imgur.com/Av15A.gif

there is a big delay when I create multiple JInternalFrame windows in JFrame and drag them around

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窗口时会出现严重延迟吗?

java macos swing jinternalframe
1个回答
0
投票
        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);可以避免这个问题

© www.soinside.com 2019 - 2024. All rights reserved.