我正在编写一个虚拟笔记本应用程序。这个想法是将具有各种内容(基于外部文件)的面板添加到充当页面的面板中。一旦该页面已满,其专用的 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/