设置JDialog的最大大小?简短的版本:我需要做一些棘手的事情来让JDialog的setMaximumSize()起作用吗?完整版:我有一个JDialog(布局管理器:BorderLayout),它包含一个滚动窗格和底部带有提交按钮的JPanel。滚动窗格包含一个JPanel,它在系统的其他位置动态构建。我想要的是对话框在JPanel周围动态调整大小到一定大小,然后开始增长滚动条。这或多或少是默认情况下发生的事情,除了最大尺寸似乎是我的显示器的大小。我认为这是从java.awt.Component继承的.setMaximumSize()方法,但设置它似乎没有任何效果。设置首选大小确实有效 - 但是无论如何,对话框总是那么大,这实际上并不是我想要的。(如果我在滚动窗格上设置最大/首选大小属性,效果是相同的。)我错过了一些非常明显的东西吗?是否有一些我不知道的古怪的JDialog / BorderLayout / MaximumSize交互?
3 回答
MYYA
TA贡献1868条经验 获得超4个赞
导致JDialog大小的pack()方法依赖于对getPreferredSize()的调用来确定要使用的大小。
如果您是JDialog的子类,则可以通过继承此方法来强制实施最大大小。
例:
@Override public Dimension getPreferredSize() { int maxWidth=500; int maxHeight=300; Dimension dim=super.getPreferredSize(); if (dim.width>maxWidth) dim.width=maxWidth; if (dim.height>maxHeight) dim.height=maxHeight; return dim; }
添加回答
举报
0/150
提交
取消