Java JFrame大小调整不正确
当我设置JFrame的大小时,它会设置框架本身的大小,包括边框。 我尝试创建一个新的内容面板,并设置该大小,而不是设置框架本身的大小,但它不起作用。下面是代码:Java JFrame大小调整不正确,java,jframe,size,contentpane,insets,Java,Jframe,Size,Contentpane,Insets,当我设置JFrame的大小时,它会设置框架本身的大小,包括边框。 我尝试创建一个新的内容面板,并设置该大小,而不是设置框架本身的大小,但它不起作用。下面是代码: frame = new JFrame(); JPanel jp = new JPanel(); frame.setTitle(title); //frame.setSize(width, height); frame.setResizable(false); frame.setLocationRelativeTo(null); fra
frame = new JFrame();
JPanel jp = new JPanel();
frame.setTitle(title);
//frame.setSize(width, height);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//insets = frame.getInsets();
//frame.setSize(new Dimension(insets.left + width + insets.right, insets.top + height + insets.bottom));
jp.setPreferredSize(new Dimension(width, height));
frame.setContentPane(jp);
frame.pack();
frame.setVisible(true);
因此,使用插图不起作用,使用新的ContentPane也不起作用,我希望这足够清楚
编辑:它现在可以工作了,我用Canvas扩展了这个类,将它的大小设置为宽度和高度,然后将它添加到JFrame中,然后打包。这管用!但我认为导致它的原因不是大小,而是我渲染它的方式,我从JFrame获得了缓冲策略,而不是画布,这不是它应该的方式。覆盖
getPreferredSize()
以设置JPanel
的首选大小
示例代码:
JPanel panel =new JPanel (){
@Override
public Dimension getPreferredSize() {
return new Dimension(..., ...);
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// GUI related code goes here (not heavy task)
}
});
}
看
使用或确保已正确初始化 示例代码:
JPanel panel =new JPanel (){
@Override
public Dimension getPreferredSize() {
return new Dimension(..., ...);
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// GUI related code goes here (not heavy task)
}
});
}
看
为什么要设置
JFrame
的新内容窗格?只需使用frame.getContentPane().add(panel)
或frame.add(panel)
调用
frame.setResizeable(false)
最后,在使其可见后,确保所有组件都正确安装。我刚刚尝试过,并且ContentPane
上的setPreferredSize
肯定能正常工作。欢迎使用堆栈溢出,请使用。