Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 901
E mad Avatar asked Dec 01 '22 02:12

E mad


1 Answers

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

like image 146
MadProgrammer Avatar answered Dec 05 '22 12:12

MadProgrammer