gpt4 book ai didi

java - BorderLayout.NORTH 行为异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:22 25 4
gpt4 key购买 nike

我有一个 JFrame-descendant 窗口,带有一个 JMenuBar 和两个存储在 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 在其上方居中: Looks good.

但是,如果窗口的大小调整超过某个阈值,JPanel 会更改位置:

Not looking good.

缩小窗口会使其跳回其先前(正确)的位置。

我已阅读javadoc for BorderLayout而且我之前也用过,不过目前还没有遇到这种现象。 javadoc 说“NORTH 和 SOUTH 组件可能会水平拉伸(stretch);”但我不认为这算作拉伸(stretch)。

除了添加一些监听器和强制性的 setVisiblesetEnabled 等之外,没有从构造函数中调用其他方法。

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

最佳答案

JPanel 默认使用 FlowLayout

尝试使用

content = new JPanel(new BorderLayout());

代替

关于java - BorderLayout.NORTH 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com