设置JDialog的最大大小?

设置JDialog的最大大小?

简短的版本:我需要做一些棘手的事情来让JDialog的setMaximumSize()起作用吗?

完整版:我有一个JDialog(布局管理器:BorderLayout),它包含一个滚动窗格和底部带有提交按钮的JPanel。

滚动窗格包含一个JPanel,它在系统的其他位置动态构建。

我想要的是对话框在JPanel周围动态调整大小到一定大小,然后开始增长滚动条。这或多或少是默认情况下发生的事情,除了最大尺寸似乎是我的显示器的大小。

认为这是从java.awt.Component继承的.setMaximumSize()方法,但设置它似乎没有任何效果。

设置首选大小确实有效 - 但是无论如何,对话框总是那么大,这实际上并不是我想要的。

(如果我在滚动窗格上设置最大/首选大小属性,效果是相同的。)

我错过了一些非常明显的东西吗?是否有一些我不知道的古怪的JDialog / BorderLayout / MaximumSize交互?


慕斯709654
浏览 760回答 3
3回答

MYYA

导致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; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java