我这几天正在学习JTable类,我想在JFrame中显示表头。
当我的代码是这样的
JScrollPane scrollPane = new JScrollPane(table); //table had been constucted;
一切都好;但是
当我的代码是这样的
JScrollPane scrollPane = new JScrollPane();
scrollPane.add(table);
当我运行程序时,我在JFrame中看不到任何数据;
我希望通过阅读JScrollPane的源代码和Java SE API文档来找到一些东西,但我没有得到满意的答案。我所知道的是 add 是从 Container 继承的,而 JScorllPane 的构造函数有不同的实现。但我不明白为什么。 :(
你能帮我吗?非常感谢!
ps:这是 StackOverflow 上的第一个问题。我是一名中国学生,我的英语很差。如果有什么问题请原谅。又是 3 公里。
最佳答案
构造函数不会将 JTable 添加到 JScrollPane 中,而是添加到其视口(viewport)的 View 中。
所以这个:
JScrollPane scrollpane = new JScrollPane(jTable); // (1)
相当于:
JScrollPane scrollpane = new JScrollPane(); // (2)
scrollpane.setViewportView(jTable); // (3)
因此请注意,上面第 (1) 行的构造函数调用不会将 JTable 添加到 JScrollPane 组件本身,因为如果这样做,它将替换其视口(viewport),从而使 JScrollPane 无法操作。相反,构造函数将组件添加到其 JViewport。
关于java - 使用JTable类时,JScrollPane的构造函数和它的add方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432677/