user3703592
user3703592

Reputation: 160

JScrollPane in JFrame

I want to write a simple Java program, which consists of a JFrame that integrates a JScrollPane. Just it does not work the way I do it.

What is the issue of the my approach ?

public class TestView {

    JFrame frame;
    JScrollPane scrollPane;

    public TestView(){

        frame = new JFrame();
        scrollPane = new JScrollPane();    
        scrollPane.add(new JLabel("Klick me"));
        scrollPane.setMinimumSize(new Dimension(200,200));

        frame = new JFrame();
        frame.getContentPane().add(scrollPane);
        frame.setSize(200,200);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void createAndShowGui(){
        TestView tv = new TestView();
    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                 createAndShowGui();
            }
        });

Upvotes: 0

Views: 245

Answers (2)

milez
milez

Reputation: 2201

If the issue is that you do not see your label in the scrollpane, you might need to use

scrollpane.setViewportView(new JLabel("Klick me"));

instead of

scrollPane.add(new JLabel("Klick me"));

Additionally, I suggest you create a JPanel, give it a layout, and place your label there, instead of passing the label to the scrollpane. Then set this panel as the viewport.

Please see

Difference between JscrollPane.setviewportview vs JscrollPane.add

Upvotes: 2

12dollar
12dollar

Reputation: 655

use for example:

final JPanel myPanel = new JPanel();
myPanel.setPreferredSize(new Dimension(50, 50));  
final JScrollPane scrollPane = new JScrollPane(myPanel);

setMinimumSize will be ignored.

Upvotes: 1

Related Questions