我正在创建一个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时它不起作用。
快照
我不知道为什么我看不到剩下的按钮。
PD:我的班级是另一个JPanel的组成部分。
答案 0 :(得分:4)
您没有正确使用GroupLayout,因此面板没有合适的首选尺寸。您无法向面板添加组件。您还需要指定GroupLayout约束。我建议你不要使用GroupLayout。它专为使用单个布局管理器的IDE而设计。
ab.setSize(100,50);
ab.setLocation(i*300, 0);
使用布局管理器的目的是让布局管理器确定组件的大小/位置。正确使用布局管理器后,滚动窗格上的滚动条将自动运行。
我建议您使用FlowLayout
或水平BoxLayout
。阅读Using Layout Manager上Swing教程中的部分,了解上述每种布局的工作示例。