在 Mac 上,当我在 JFrame 中创建多个 JInternalFrame 窗口并拖动它们时,会出现很大的延迟。
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窗口时会出现严重延迟吗?
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);可以避免这个问题