在我早些时候调试时,我发现了一些有点奇怪的东西。使用以下代码,JDesktopPane
的宽度直接或间接地发生变化,似乎没有任何交互。
import javax.swing.*;
public class Main
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(960, 640);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLocationRelativeTo(null);
JDesktopPane desktop = new JDesktopPane();
frame.add(desktop);
System.out.println(desktop.getWidth()); // 0
frame.setVisible(true);
System.out.println(desktop.getWidth()); // ~1/2 monitor width
new JInternalFrame();
System.out.println(desktop.getWidth()); // monitor width
}
}
我可以理解为什么宽度会在JFrame
发生变化时发生变化,但为什么变化只是因为创建了JInternalFrame
?