我有一个JPanel里面的JScrollPane它嵌套在一些其他容器内。我的JPanel使用来自SO用户jxd的this question的修改FlowLayout。JScrollPane中的JPanel扩展包
这可以是信息矫枉过正,但所讨论的面板的全部嵌套如下:
的JPanel(ModifiedFlowLayout)> JScrollPane的>的JPanel(GridBagLayout的)> JTabbedPane中>的JPanel(GridBagLayout的)>调整JSplitPane>的JPanel(BorderLayout的)> JFrame。
问题是,当我在我的JFrame上调用pack()时,JScrollPane/JPanel水平扩展以填充整个剩余的屏幕空间(跨多个显示器)。所使用的空间远远超过显示JPanel中所有组件所需的空间。我尝试在我的JPanel上使用setMaximumSize(),但在这种情况下它似乎被忽略。
理想情况下,我希望面板在调整围绕它的组件的大小后留下空间。可以/如何做到这一点?
你试过重写getPreferredSize()吗? – nachokk
@nachokk嗯,我会被诅咒。我认为最大尺寸将是比首选尺寸更重要的因素,但设置似乎阻止了扩展,尽管它已导致ModifiedFlowLayout开始表现不当,但这可能是一个不同的问题。我也没有覆盖它,因为我只使用JPanel而不是扩展它。我使用'setPreferedSize()'来代替。 – Fr33dan
[我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?](http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-方法在java的swi) – nachokk