0

我有扩展JPanel的提醒类,带有boxlayout和

setPreferredSize(new Dimension(500,500))

在主类中,我有 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 中心的提醒面板不改变其大小(500,500),并且框架不应该改变它的大小(900,900)。当我运行上面的代码时,rem 面板完全展开了。如何使rem面板居中?

4

3 回答 3

1

简单的方法:使用 AbsoluteLayout 并使用图形编辑器将“rem”准确定位在您想要的位置。然后为框架设置不变的大小:

 frame.setResizable(false);
于 2013-03-14T13:00:29.817 回答
0

不要使用BorderLayout. 如果 BorderLayout 正是您不想要的,为什么还要使用它?

编辑:BoxLayout是一种选择,如果您真的需要自己绝对定位所有内容,您也可以决定不使用布局管理器,例如http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

于 2013-03-14T12:54:10.743 回答
0

另外,如果您想使用 Borderlayout,我很确定这是您的代码中的错字:

frame.add(rem,BorderLayout.CENTRE);

应该:

frame.add(rem,BorderLayout.CENTER);

会不会是这件小事让你烦恼?

于 2013-03-14T13:03:57.580 回答