Java 如何停止JFrame中JPanel的大小调整
我有一个扩展JPanel的提醒类,带有boxlayout和Java 如何停止JFrame中JPanel的大小调整,java,swing,layout,jpanel,Java,Swing,Layout,Jpanel,我有一个扩展JPanel的提醒类,带有boxlayout和 setPreferredSize(new Dimension(500,500)) 在main类中,我有JFrame rem = new Reminder(); frame.setSize(900,900); rem.setMaximumSize(new Dimension(500,500)); frame.getContentPane().removeAll()
setPreferredSize(new Dimension(500,500))
在main类中,我有JFrame
rem = new Reminder();
frame.setSize(900,900);
rem.setMaximumSize(new Dimension(500,500));
frame.getContentPane().removeAll();
frame.setLayout(new BorderLayout());
frame.add(rem,BorderLayout.CENTRE);
frame.validate();
frame.repaint();
我希望提醒面板位于jframe的中心,而不改变其尺寸(500500),并且frame不应改变其尺寸(900900)。当我运行上述代码时,rem面板完全展开。如何使rem面板居中?不要使用
边框布局
。如果你不想要的是边框布局,为什么要使用它呢
编辑:
BoxLayout
是一种选择,如果您真的需要完全自己定位所有内容,您也可以决定不使用布局管理器,例如。简单方法:使用绝对布局并使用图形编辑器将“rem”准确定位在您想要的位置。
然后为框架设置不变的大小:
frame.setResizable(false);
另外,如果你想使用Borderlayout,我敢肯定这是你代码中的一个输入错误:
frame.add(rem,BorderLayout.CENTRE);
应该是:
frame.add(rem,BorderLayout.CENTER);
是这个小问题困扰着你吗?我用boxlayout框布局,我面临错误,因为boxlayout无法共享。你说“无法共享”是什么意思?当我将layout设置为boxlayout到jframe时,它给我错误,因为boxlayout无法共享?甚至我都不知道为什么会出现这个错误。@vijay,这是因为您正在执行以下操作:
panel1.setLayout(new-BoxLayout(panel2,BoxLayout.Y_轴))
new-BoxLayout的第一个参数应该与您将其附加到的面板,panel1,在我的例子中,对于那些来到这里希望能够在不调整面板大小的情况下调整JFrame大小的人(如问题所述),问题在于您的LayoutManager。我建议研究MigLayout,因为它比LayoutManager容易学习,而且非常强大。此外,setMaximum/Prefered/Min size或@Override ing getMax/Min/Pref size都是需要研究的潜在因素。