滚动一个JPanel(Scrolling a JPanel)

2019-06-24 00:10发布

我想用一个大小和位置确定一个JPanel。 JPanel中内,我已经一定数量水平插入元件(按钮)的。 因为我的JPanel有一个定义的宽度,如果我增加太多的按钮,我看不出。 在这种情况下,我需要此JPanel滚动条。 但此JPanel必须在一定的尺寸一个JFrame内的某个位置。 在JPanel的滚动条均有水平放置在它之下。 有人能帮助我吗? 我已经试过了没有成功!

Answer 1:

使用一个JScrollPane,并迫使其首选大小您给定的大小(或设置滚动面板容器布局管理上滚动窗格空并调用的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);
    }
}


Answer 2:

所有的按钮添加到您的面板。 然后添加此面板滚动面板。

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

一旦你在面板中添加按钮,添加面板滚动面板。

JScrollPane panelPane = new JScrollPane(panel);

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



Answer 3:

下面是一些可能的解决方案:

  • JList的使用Jbutton将与JPanel的使用Jbutton将

要么

  • 用于滚动该决定PointRectangle存在的方法scrollRectToVisible例如myPanel.scrollRectToVisible(myButton.getBounds());


文章来源: Scrolling a JPanel