使用JTable类时,JScrollPane的构造函数与其add方法之间有什么区别?

0 java swing jtable jscrollpane

我现在正在学习JTable类,我想在JFrame中显示表头.

当我的代码像这样

JScrollPane scrollPane = new JScrollPane(table); //table had been constucted;
Run Code Online (Sandbox Code Playgroud)

一切都是对的; 但

当我的代码像这样

JScrollPane scrollPane = new JScrollPane();
scrollPane.add(table);
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我在JFrame中看不到任何数据;

我希望通过阅读JScrollPane的源代码并阅读Java SE API文档来找到一些东西,但我没有得到满意的答案.我所知道的是add是继承自Container,而JScorllPane的构造函数有不同的实现.但我不明白为什么.:(

你能帮助我吗 ?非常感谢!

ps:这是StackOverflow上的第一个提问.我是中国学生,英语很差.如果出现问题我请原谅.再次3ks.

Hov*_*els 6

构造函数不会将JTable添加到JScrollPane,而是添加到其视口的视图中.

所以这:

JScrollPane scrollpane = new JScrollPane(jTable); // (1)
Run Code Online (Sandbox Code Playgroud)

相当于:

JScrollPane scrollpane = new JScrollPane();  // (2)
scrollpane.setViewportView(jTable);  // (3)
Run Code Online (Sandbox Code Playgroud)

请注意,上面第(1)行的构造函数调用不会将JTable添加到JScrollPane组件本身,因为如果它,它将替换其视口,从而使JScrollPane无法运行.而是构造函数将组件添加到其JViewport.