在我開始之前,我知道不使用佈局管理器是一個糟糕的主意,通常我使用一個佈局管理器,但是,我也將所有組件自動重新調整大小並根據窗口大小進行重新定位。另外,我正在開發的程序只能在一臺機器上運行。請不要因爲缺乏佈局管理器而低估我,我發現它是我爲這個特定程序所需要的。在沒有佈局管理器的情況下將JScrollPane添加到JPanel
對我的問題,我發現了一個類似的帖子在stackoverflow但解決方案從未實現。 我給我的JPanel
添加了一個動態數量JLabels
,我注意到當不使用佈局管理器時,滾動器不起作用。
這是我的初始化代碼的簡化版本。
JPanel mypanel = new JPanel();
mypanel.setLayout(null);
mypanel.setSize(800,450);
mypanel.setForeground(Color.WHITE);
mypanel.setBackground(Color.BLACK);
scrollablePanel = new JScrollPane(mypanel);
scrollablePanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollablePanel.setPreferredSize(new Dimension(800,300));
scrollablePanel.setSize(800,300);
scrollablePanel.setLocation(250,156);
myContainer.add(scrollablePanel);
其中myContainer
將是容器(也沒有佈局管理器)。 JLabels
稍後添加到JPanel
上:
enter code here
mypanel.add(label1);
爲標籤設置了一些基本設置後,如setForeground
和setBackground
。
不幸的是運行時,彷彿它不是必需的出現滾動條(見圖片)
http://i.imgur.com/zp0QKGG.png
圖像中看到的表中的文本是由多個JLabels
的。 如果不使用佈局管理器無法解決問題,我將切換到BoxLayout,我只是希望能有一個解決方案。
'JScrollPane'依賴結果來自視圖的'getPreferredSize'方法,該方法依賴於'LayoutManager' ... – MadProgrammer
因此無法使其工作,或者是否可以手動設置PrefferedSize? – Cody
@ alex2410但它永遠不會顯示滾動條清除程序... – MadProgrammer