Java 将首选大小设置为JFrame或其内容窗格

Java 将首选大小设置为JFrame或其内容窗格,java,swing,Java,Swing,我目前正试图理解两者之间的区别 frame.getContentPane().setPreferredSize(新维度(600400)) 及 frame.setPreferredSize(新尺寸(600400)) 如果有人能帮助我,我将不胜感激 public class AutoCredit extends JFrame { JFrame frame = new JFrame(); public AutoCredit() { frame.getContentP

我目前正试图理解两者之间的区别

frame.getContentPane().setPreferredSize(新维度(600400))

frame.setPreferredSize(新尺寸(600400))

如果有人能帮助我,我将不胜感激

public class AutoCredit extends JFrame {

    JFrame frame = new JFrame();

    public AutoCredit() {
        frame.getContentPane().setPreferredSize(new Dimension(600, 400));
        frame.setPreferredSize(new Dimension(600, 400));
    }

    public static void main(String[] args) {
        AutoCredit tp = new AutoCredit();
        tp.setSize(900, 400);
        tp.setVisible(true);

    }

}

当GUI需要如此大的空间(例如游戏界面)时,设置内容窗格的首选大小更“可靠”,因为它考虑了框架装饰(这将使整个GUI的大小更大)。当然,除非框架是未装饰的,但在该阶段,使用
JWindow
更为合理。话虽如此,两者都不应该做。相反,您可以覆盖添加到自定义绘制GUI内容窗格的组件中的首选大小方法,或者将其保留为组件的默认大小(带边框、填充等)。您好,Andrew,谢谢您的回答。我一直看到“内容窗格”这个词,但实际上我没有看到它,也不知道它在哪里。有没有办法使“内容窗格”可见,以便我可以看到它实际上在那里?e、 g以一种颜色查看内容窗格,以另一种颜色查看JFrame。“是否有办法使“内容窗格”可见,以便我可以看到它实际存在?”
frame.getContentPane().setBackground(color.PINK)。它还可能有助于
System.out.println(frame.getContentPane())。我尝试了frame.getContentPane().setBackground(Color.PINK);这是因为您初始化了两个
JFrame
实例。您可以扩展
JFrame
(这意味着它是
JFrame
),但您可以通过
JFrame frame=new JFrame()
初始化另一个
JFrame
实例。此外,添加不透明组件时,也不会看到内容窗格。要更好地了解根窗格层,请参见设置内容窗格的首选大小,当GUI需要足够大的空间(例如,游戏界面)时,它更“可靠”,因为它考虑了框架装饰(这将使整个GUI的大小更大)。当然,除非框架是未装饰的,但在该阶段,使用
JWindow
更为合理。话虽如此,两者都不应该做。相反,您可以覆盖添加到自定义绘制GUI内容窗格的组件中的首选大小方法,或者将其保留为组件的默认大小(带边框、填充等)。您好,Andrew,谢谢您的回答。我一直看到“内容窗格”这个词,但实际上我没有看到它,也不知道它在哪里。有没有办法使“内容窗格”可见,以便我可以看到它实际上在那里?e、 g以一种颜色查看内容窗格,以另一种颜色查看JFrame。“是否有办法使“内容窗格”可见,以便我可以看到它实际存在?”
frame.getContentPane().setBackground(color.PINK)。它还可能有助于
System.out.println(frame.getContentPane())。我尝试了frame.getContentPane().setBackground(Color.PINK);这是因为您初始化了两个
JFrame
实例。您可以扩展
JFrame
(这意味着它是
JFrame
),但您可以通过
JFrame frame=new JFrame()
初始化另一个
JFrame
实例。此外,添加不透明组件时,也不会看到内容窗格。要更好地了解根窗格层,请参见