我有以下代碼:如何將一個BorderLayout的中心中使用JScrollPane的
package example;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class ScrollingExample extends JFrame
{
private static final long serialVersionUID = 1L;
public static void main(String[] args)
{
ScrollingExample scrollingExample = new ScrollingExample();
scrollingExample.go();
}
private void go()
{
JPanel topPanel = new JPanel();
topPanel.add(new JLabel("boo"));
JPanel mainPanel = new JPanel();
JPanel mainInnerPanel = makeMainInnerPanel();
JScrollPane scrollPane = new JScrollPane(mainInnerPanel);
mainPanel.add(scrollPane);
add(topPanel, BorderLayout.NORTH);
add(mainPanel, BorderLayout.CENTER);
pack();
setVisible(true);
}
private JPanel makeMainInnerPanel()
{
JPanel row1 = makeHorizontalPanel("one", "two", "three", "four", "five");
JPanel row2 = makeHorizontalPanel("six", "seven", "eight");
JPanel row3 = makeHorizontalPanel("nine", "ten", "eleven");
JPanel mainInnerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
mainInnerPanel.add(row1);
mainInnerPanel.add(row2);
mainInnerPanel.add(row3);
return mainInnerPanel;
}
private JPanel makeHorizontalPanel(String ... labelValues)
{
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (String s : labelValues)
{
JLabel label = new JLabel(s);
panel.add(label);
}
return panel;
}
}
當我展示它,它本身尺寸顯示所有的標籤;當我調整窗口大小時,我無法看到滾動條。
當我得到這個工作時,我想做一個包含JTabbedPane和幾個按鈕的面板,如果用戶調整了窗口的大小,以至於無法看到它的某個部分,我想讓它具有滾動條。如果這個問題的答案需要額外的或不同的做法,提到它將不勝感激。
@mKorbel我實際上是要刪除我的答案後(花了我10分鐘後)&我注意到你已經在那裏。都很好。 :) – 2012-02-07 17:21:32
顯然,它只是在要滾動的面板上的FlowLayout。我錯過了其他什麼嗎? – arcy 2012-02-07 18:38:22
不是我能看到的。 「BorderLayout」(帶有「CENTER」約束)或「GridLayout」可以將孩子拉伸到所需的大小。 – 2012-02-07 18:43:05