【发布时间】:2015-01-02 08:46:18
【问题描述】:
我对 JFrame 的大小有疑问:
我想在 Jframe 中显示内容。内容的大小为 640 x 480。但我不能使用 JFrame.setSize(640, 480); 的方法,因为我还想显示窗口的装饰。
我的第一个想法是:添加一个具有首选尺寸的面板,而不是使用 pack();。但这也不起作用 - 我只得到一个非常小的窗口。
我认为我的问题的解决方案可能与此类似:
这是我的代码:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Fenster extends JFrame {
JPanel panel;
Dimension dim;
Fenster(){
dim = new Dimension(640, 480);
panel = new JPanel();
panel.setSize(dim);
panel.setMinimumSize(dim);
panel.setMaximumSize(dim);
panel.setPreferredSize(dim);
panel.setBounds(0, 0, 640, 480);
panel.setDoubleBuffered(true);
JLabel label = new JLabel("bla");
panel.add(label);
this.setLayout(null);
this.getContentPane().add(panel);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
}
}
【问题讨论】:
-
this.setLayout(null);是你的问题。让布局管理器完成它的工作 -
前面你强调的问题不是完全相同的问题,或者至少接受的解决方案不正确......
-
“我的第一个想法是:添加一个具有首选尺寸的面板,而不是使用 pack();。” 你的第一个想法是正确的(就像在最佳实践中一样,可以工作)。我会坚持找出失败的原因。
标签: java swing jframe size window-decoration