java - 使用JTable类时,JScrollPane的构造函数和它的add方法有什么区别?

标签 java swing jtable jscrollpane

我这几天正在学习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/

相关文章:

java - 使用 JxBrowser HEAVYWEIGHT 时禁用 Swing 中的拖放

java - 在Java中使用JLabel创建背景后无法将其他组件添加到窗口

java - 在添加之前向具有一些行的 JTable 添加列

java - 在JTable中显示来自mysql的数据

java - Java 中退出定时器

java - 如果在将Optional <Object>作为参数时,编译器将解析为null,那是一个好主意吗?

java - JPanel 组件在尝试刷新后消失

java - 如何检测给定的单词(作为字符串)是否可以通过在元素周期表中附加元素的缩写形式来组成?

java - 为什么我的 Bit String to Hex String 代码没有打印出结果?

java - 如何获取jtable中文件的包含内容?