java - 动态添加 JPanel 时大小计算错误

标签 java swing layout size

我正在编写一个虚拟笔记本应用程序。这个想法是将具有各种内容(基于外部文件)的面板添加到充当页面的面板中。一旦该页面已满,其专用的 add 方法应返回 false。

问题是我在添加面板时不知道如何准确确定面板的大小,所以我最终添加了太多面板。面板的首选尺寸通常太短,并且尺寸的高度为 0。有没有办法确定组件在布局中占用的确切大小?

我尝试过使用 doLayout(),但它似乎没有改变我的组件的大小或首选大小。也许是我使用方式不对?下面是 add 方法:(contentPanel 有 BoxLayout,内容面板没有设置大小,但被添加到具有设置大小的面板(this)中。该方法所在的类扩展了 JPanel)

public boolean addSpecializedgPanel(SpecializedPanel sp) {

    this.contentPanel.add(sp);

    this.doLayout();

    if (this.contentPanel.getSize().height > this.getHeight()) {
        this.contentPanel.remove(sp);
        return false;
    }

    return true;
}

感谢您的任何帮助(即使它批评了我的整个设计:))!这是一个非常令人头疼的问题!

最佳答案

我认为你不应该处理这样的大小,你应该使用布局管理器。也许你应该看看How to use CardLayout

关于java - 动态添加 JPanel 时大小计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481319/

相关文章:

java - 用于具有位于另一个注释内的注释的类中的方法的方面

java - 如何使用 iText 删除 PDF 中信息 map 的某些值

java - 单击按钮应调用一个选项卡 Pane (动态),其中包含文本面板

java - 如何访问 JLIST 中的特定元素?

html - 在现有的 div 区域中放置一个 JavaScript block

jsf - 自定义 h :selectOneRadio with other components 的布局和标签

java - 如何在 epub 页面中创建分页?安卓

java.util.Timer - 事件之间的速度不一致?

css - 如何配置 css flexbox 以便其中一个 block 的高度取决于它的内容?

java - 鼠标悬停时更改 JButton 上的图像