BorderLayout.NORTH 行为异常
Posted
技术标签:
【中文标题】BorderLayout.NORTH 行为异常【英文标题】:BorderLayout.NORTH behaving unexpecedly 【发布时间】:2013-04-14 05:49:55 【问题描述】:我有一个带有 JMenuBar 的 JFrame 子窗口 a 和两个存储在 JPanel 中的组件。一个是 JTabbedPane,它占据了屏幕的大部分,另一个是小的 JPanel,它又包含一系列按钮。它们是这样构造的:
//in constructor:
menubar = new BFIDEMenuBar(this);
setJMenuBar(menubar);
content = new JPanel();
add(content);
buttons = new BFIDEButtonBar();
editors = new JTabbedPane();
content.add(buttons, BorderLayout.NORTH);
content.add(editors, BorderLayout.CENTER);
当窗口小于一定大小时,组件按预期排列:JTabbedPane 占据中心,“按钮”JPanel 居中:
但是,如果窗口大小调整到超过某个阈值,JPanel 会更改位置:
缩小窗口会导致它跳回到之前的(正确的)位置。
我看过javadoc for BorderLayout,之前也用过,但还没有遇到过这种现象。 javadoc 说“NORTH 和 SOUTH 组件可以水平拉伸;”但我不;这算作拉伸。
除了添加一些侦听器和必需的setVisible
、setEnabled
等之外,不会从构造函数调用其他方法。
关于为什么会发生这种情况或如何纠正它的任何想法?
【问题讨论】:
尝试content = new JPanel(new BorderLayout());
而不是content = new JPanel();
@GnomezGrave MadProgrammer 打败了你。不过还是谢谢。
无论如何,你的答案是正确的。 (y)
【参考方案1】:
JPanel
默认使用FlowLayout
。
尝试使用
content = new JPanel(new BorderLayout());
改为
【讨论】:
以上是关于BorderLayout.NORTH 行为异常的主要内容,如果未能解决你的问题,请参考以下文章