滚动 JPanel
我想要一个具有大小和定义位置的JPanel。在JPanel内部,我水平插入了一定数量的元素(按钮)。因为我的JPanel有一个定义的宽度,如果我添加很多按钮,我看不到。在这种情况下,我需要一个这个JPanel的滚动条。但是这个JPanel必须在JFrame中的某个位置具有一定的大小。JPanel的滚动条已水平放置在其下方。有人可以帮助我吗?我试过了,但没有成功!
我想要一个具有大小和定义位置的JPanel。在JPanel内部,我水平插入了一定数量的元素(按钮)。因为我的JPanel有一个定义的宽度,如果我添加很多按钮,我看不到。在这种情况下,我需要一个这个JPanel的滚动条。但是这个JPanel必须在JFrame中的某个位置具有一定的大小。JPanel的滚动条已水平放置在其下方。有人可以帮助我吗?我试过了,但没有成功!
使用 JScrollPane 并将其首选大小强制为给定大小(或将 scrollPane 容器 LayoutManager 设置为 null 并在 scrollpane 上调用 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);
然后将此面板添加到您的框架中。