Scrolling a JPanel

情到浓时终转凉″ 提交于 2019-11-30 07:57:42

问题


I want a JPanel with a size and defined position. Inside the JPanel, I've certain number of elements (buttons) inserted horizontally. Because my JPanel has a defined width, if I add much buttons, I couldn't see that. In this case, I need a scrollbar for this JPanel. But this JPanel must be a CERTAIN SIZE IN A CERTAIN POSITION inside a JFrame. The scrollbar of the JPanel has positioned under it horizontally. Someone can help me? I've tried it without success!


回答1:


Use a JScrollPane and force its preferredSize to your given size (or set the scrollPane container LayoutManager to null and call setBounds() on the scrollpane). Also set the scrollbar policies. Here is a small sample of that:

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);
    }
}



回答2:


Add all the buttons to your panel. Then add this panel to scrollpane.

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

Once you add buttons in panel, add panel to scrollpane.

JScrollPane panelPane = new JScrollPane(panel);

And then add this panel to your frame.




回答3:


Here are some possible solutions:

  • JList with JButtons and JPanel with JButtons

or

  • for scrolling to the decision Point or Rectangle there exists the method scrollRectToVisible e.g. myPanel.scrollRectToVisible(myButton.getBounds());


来源:https://stackoverflow.com/questions/10346449/scrolling-a-jpanel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!