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 组件可以水平拉伸;”但我不;这算作拉伸。

除了添加一些侦听器和必需的setVisiblesetEnabled 等之外,不会从构造函数调用其他方法。

关于为什么会发生这种情况或如何纠正它的任何想法?

【问题讨论】:

尝试content = new JPanel(new BorderLayout()); 而不是content = new JPanel(); @GnomezGrave MadProgrammer 打败了你。不过还是谢谢。 无论如何,你的答案是正确的。 (y) 【参考方案1】:

JPanel 默认使用FlowLayout

尝试使用

content = new JPanel(new BorderLayout());

改为

【讨论】:

以上是关于BorderLayout.NORTH 行为异常的主要内容,如果未能解决你的问题,请参考以下文章

边框布局与网格布局冲突

是否有查找组件布局位置的功能? [关闭]

java中的bo怎么理解?怎么运用

weblogic日志异常排查[时区错误]

H5 EPG异常排查 兼容处理

searchController 异常行为