滚动JPanel

我想要一个具有大小和定义位置的JPanel。 在JPanel内部,我有一定数量的元素(按钮)水平插入。 因为我的JPanel有一个已定义的宽度,如果我添加了很多按钮,我就看不到了。 在这种情况下,我需要一个这个JPanel的滚动条。 但是这个JPanel必须是JFrame中某个位置的特定尺寸。 JPanel的滚动条水平放置在它下面。 有人可以帮帮我吗? 我尝试过没有成功!

使用JScrollPane并将其preferredSize强制为给定大小(或将scrollPane容器LayoutManager设置为null并在滚动窗格上调用setBounds())。 还要设置滚动条策略。 以下是一个小样本:

 import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; public class Test { public static void main(String... args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); for (int i = 0; i < 10; i++) { panel.add(new JButton("Hello-" + i)); } JScrollPane scrollPane = new JScrollPane(panel); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); scrollPane.setBounds(50, 30, 300, 50); JPanel contentPane = new JPanel(null); contentPane.setPreferredSize(new Dimension(500, 400)); contentPane.add(scrollPane); frame.setContentPane(contentPane); frame.pack(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); } } 

将所有按钮添加到面板。 然后将此面板添加到滚动窗格。

 panel.add(button1); panel.add(button2); panel.add(button3); . . . panel.add(buttonn); 

在面板中添加按钮后,将面板添加到滚动窗格。

 JScrollPane panelPane = new JScrollPane(panel); 

然后将此面板添加到您的框架中。

这是一些可能的解决方案:

  • 带JButtons的JList和带JButtons的JPanel

要么

  • 对于滚动到决策PointRectangle ,存在方法scrollRectToVisible例如myPanel.scrollRectToVisible(myButton.getBounds());