2012-02-20 42 views
2

我正在研究一个具有流布局的程序,里面是一组标签,因为有太多它们不能全部显示。无论如何添加一个滚动窗格滚动浏览所有这些标签水平?JScrollPane用于多个标签

JPanel mainpanel = new JPanel(); 
    mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS)); 
     pane.add(mainpanel, BorderLayout.NORTH); 

     JPanel rightpanel = new JPanel(); 
     rightpanel.setLayout(new FlowLayout()); 
     for (int i = 0; i < 100; i++) 
     { 
      rightpanel.add(new JLabel("Label " + i)); 
     } 
     mainpanel.add(new JLabel("Left label")); 
     mainpanel.add(new JScrollPane(rightpanel)); 
+0

你说在你得到一个空指针异常的评论。这是从哪里来的?在上面的代码中,你在哪里定义'pane'?尝试总是提供一个[SSCCE](http://sscce.org) – DNA 2012-02-21 08:42:43

回答

3

我建议OT使用JListJTable与在JListJTable一个Column或(取决于或方向),对象是JLabel/JComponent默认

2

不知道什么是你的问题真的,因为你已经知道你需要使用JScrollPane。如何:

public class ScrollLabels 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame("Labels"); 

     JPanel mainpanel = new JPanel(); 
     mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.X_AXIS)); 
     frame.add(mainpanel); 

     JPanel rightpanel = new JPanel(); 
     rightpanel.setLayout(new FlowLayout()); 
     for (int i = 0; i < 100; i++) 
     { 
      rightpanel.add(new JLabel("Label " + i)); 
     } 
     mainpanel.add(new JLabel("Left label")); 
     mainpanel.add(new JScrollPane(rightpanel)); 
     frame.setSize(500, 100); 
     frame.setVisible(true); 
    } 
} 
+0

谢谢DNA,但如果我想要在左边的标签,让我们说:“名称”和一堆标签在右侧和为滚动窗格仅滚动右侧的标签。 – 2012-02-20 17:21:29

+1

然后,您需要将标签和滚动窗格添加到另一个容器,然后选择布局管理器(可能是BoxLayout)将它们左右排列。 – DNA 2012-02-20 18:12:44

+0

你能告诉我一个例子,因为我已经尝试了3个多小时,而我却无法让它工作。 – 2012-02-20 23:33:09