滚动

时间:2016-05-17 19:27:43

标签: java swing jscrollpane

我正在创建一个GUI,但我遇到了问题。

我有JPanel信息,最后我还有另一个JPanel,其中JScrollPane可以在需要时滚动。

这是代码:

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作为构造函数的view参数。设置水平(当里面的按钮不在我的视图中时)和垂直(从不)

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

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

快照

enter image description here

我不知道为什么我看不到剩下的按钮。

PD:我的班级是另一个JPanel的组成部分。

1 个答案:

答案 0 :(得分:4)

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

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

使用布局管理器的目的是让布局管理器确定组件的大小/位置。正确使用布局管理器后,滚动窗格上的滚动条将自动运行。

我建议您使用FlowLayout或水平BoxLayout。阅读Using Layout Manager上Swing教程中的部分,了解上述每种布局的工作示例。