2016-05-17 70 views
0

我正在创建一个GUI,我有一个问题。JScrollPane没有显示在滚动上

我有一个JPanel与信息,并在它的结束,我还有一个JPanelJScrollPane需要时滚动。

这是代码:

public BreadCrumpsDisplayer(JPanel father) 
{ 
    this.setBackground(new java.awt.Color(200, 200, 200)); 
    this.setPreferredSize(new java.awt.Dimension(father.getSize().width, height)); 
    javax.swing.GroupLayout MigasDePanLayout = new javax.swing.GroupLayout(this); 
    this.setLayout(MigasDePanLayout); 
    sp = new JScrollPane(this); 
    sp.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); 
    sp.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    for (int i = 0; i < 8; i++) { 
     JButton ab = new JButton("HHH"); 
     ab.setSize(100,50); 
     ab.setLocation(i*300, 0); 
     this.add(ab); 
    } 
    father.add(sp, java.awt.BorderLayout.PAGE_END); 
    addMouseListener(this); 
addMouseMotionListener(this); 
} 

我的班级是一个JPanel。我设定颜色和大小。然后,我用我的类创建ScrollPane作为构造函数的视图参数。设置水平(当里面的按钮不在我看来)和垂直(从不)

然后,我创建了8个按钮,并将它们放在我的面板中。

问题是我看不到它们,当我尝试移动ScrollBar时它不起作用。

快照

enter image description here

我不知道为什么我看不到按钮的其余部分。

PD:我的类是另一个JPanel的组件。

+0

你正在把每个按钮放在300的多边形的位置上。难道你的整个酒吧都小于那个吗? – threaz

回答

4

您没有正确使用GroupLayout,因此面板没有适当的首选尺寸。你不能只是添加组件到面板。您还需要指定GroupLayout约束。我建议你不要使用GroupLayout。它是为使用单个布局管理器的IDE而设计的。

ab.setSize(100,50); 
ab.setLocation(i*300, 0); 

利用布局管理的要点是让布局管理器确定组件的尺寸和/位置。正确使用布局管理器时,滚动窗格上的滚动条将自动工作。

我建议你可以使用FlowLayout或横向BoxLayout。请阅读Swing教程Using Layout Manager中的部分,了解上述每种布局的工作示例。

+0

我使用流程布局,并且一切都变好了,谢谢! – Transy

+0

@Transy,很高兴帮助。不要忘了单击复选标记以“接受”答案,以便人们知道问题已解决。 – camickr