E mad
E mad

Reputation: 313

Difference between JScrollPane.setviewportview vs JScrollPane.add

I faced this new thing today, and I didn't know why. When I want to show something in panel for example, I just add it to panel; but why I cannot add a table to scroll pane directly, and why I have to call the setviewportview() method? What does add() method do and what does setViewProtView() do?

Upvotes: 5

Views: 12093

Answers (1)

MadProgrammer
MadProgrammer

Reputation: 347314

Basically, you should not use JScrollPane#add.

JScrollPane has a single component already attached to it, a JViewport, this is what the JScrollPane uses to display any component added to the view port.

enter image description here

setViewportView is a convenience method for for JScrollPane#getViewport#setView

The basic concept comes down to the fact that from the scroll panes point of view, it will only show a single component, so add doesn't actually make any sense for it. The method is a consequence of extending from JComponent -> Container

Upvotes: 21

Related Questions