我有一個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