JScrollPane.setviewportview与JScrollPane.add之间的区别

我今天遇到了这个新事物,我不知道为什么。 例如,当我想在面板中显示某些内容时,我只需将其添加到面板中; 但为什么我不能直接添加表格滚动窗格,为什么我必须调用setviewportview()方法? add()方法做了什么以及setViewProtView()做了什么?

基本上,您不应该使用JScrollPane#add

JScrollPane已经附加了一个组件,一个JViewport ,这就是JScrollPane用来显示添加到视图端口的任何组件的内容。

在此处输入图像描述

setViewportViewJScrollPane#getViewport#setView的便捷方法

基本概念归结为这样的事实:从滚动窗格的角度来看,它只会显示一个组件,因此add实际上对它没有任何意义。 该方法是从JComponent – > Container扩展的结果