3

我有一个带有 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 会更改位置:

不好看。

缩小窗口会导致它跳回到之前的(正确的)位置。

我已经阅读了BorderLayout 的 javadoc并且我之前使用过它,但是我还没有遇到过这种现象。javadoc 说“NORTH 和 SOUTH 组件可以水平拉伸;” 但我不;这算作拉伸。

除了添加一些侦听器和强制性的 , 等之外,不会从构造函数中调用其他setVisible方法setEnabled

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

4

1 回答 1

4

JPanel默认情况下使用FlowLayout.

尝试使用

content = new JPanel(new BorderLayout());

反而

于 2013-04-21T05:52:13.823 回答