nuju
nuju

Reputation: 818

Resize JPanel within JScrollPane - never smaller than viewport

I've created a JPanel and JScrollPane like so:

JPanel panel = new JPanel();
panel.setPreferredSize(5000, 5000);
JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPanel.getViewport().setBackground(Color.GRAY); //panel is white

I will be using event handlers to dynamically resize the panel. The problem is, sometimes the panel is smaller than the viewport. I'd set the panel's size like this:

panel.setPreferredSize(10, 10); //Just an example

but the panel will never be smaller than the viewport. I tried using

panel.setSize(10, 10);

and i saw a gray flicker (the viewport's background showing through), which indicated that the panel was being sized to what i wanted it to be, but then grew to the viewport's size. How can i stop this?

Upvotes: 0

Views: 1357

Answers (1)

kleopatra
kleopatra

Reputation: 51524

To control the sizing the view inside a JViewport, let it implement the Scrollable interface. Without, it's always forced to the size of the viewport.

Upvotes: 3

Related Questions