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

时间:2019-07-15 08:13:07

标签: java swing

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

handleAuthClick() { let self = this; gapi.auth2.getAuthInstance().grantOfflineAccess() .then(value => { const optionsParams = { params: new HttpParams().set('code', value.code) }; self.http.get("http://localhost:59933/api/UserCode", optionsParams) .subscribe(data => { console.log(data); }) }); }

frame.getContentPane().setPreferredSize(new Dimension(600, 400));

如果有人能帮助我,我将非常感激。

frame.setPreferredSize(new Dimension(600, 400));

1 个答案:

答案 0 :(得分:0)

如果框架装饰为 ,则区别很重要,这意味着框架具有边框,标题等。在这种情况下,您可以想象内容窗格代表内部的 框架的总尺寸,因此在添加装饰时总框架尺寸也会增加。例如,查看打印的尺寸如何有额外的像素来说明边框和标题:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        JFrame frame = new JFrame();
        frame.getContentPane().setPreferredSize(new Dimension(600, 400));
        frame.pack();
        frame.setVisible(true);
        System.out.println(frame.getSize());
    });
}

但是如果您添加行

frame.setUndecorated(true);

在调用pack之前,控制台应显示:

java.awt.Dimension[width=600,height=400]

如果相反,您这样做:

public static void main(String[] args) {

    SwingUtilities.invokeLater(() -> {
        JFrame frame = new JFrame();
        frame.setPreferredSize(new Dimension(600, 400));
        frame.pack();
        frame.setVisible(true);
        System.out.println(frame.getContentPane().getSize());
    });
}

然后您会看到,内容窗格会缩小以容纳框架装饰。