JScrollPane - 它如何显示 JTable headers?
JScrollPane - how does it display JTable headers?
JScrollPane代码的哪一部分负责显示JTable的headers列?
如果您只是将 JTable 添加到 JPanel,默认情况下它不会显示 headers。您应该将 table 传递给 JScrollPane 的构造函数,或者使用 table 作为参数调用 JScrollPane setViewportView
。那么实际上,是什么让 headers 列可见?它是 JScrollPane 内部呈现的一部分(updateUI
和 getUI
方法)吗?
最初我认为 JScrollPane 使用它的 setColumnHeaderView
来完成这个,但它没有(将 null 传递给此方法,table 仍然会显示 headers)。
JTable
负责做这件事。
JTable
的 addNotify()
方法被覆盖。基本上当组件被添加到可见容器时调用此方法。
因此 JTable
实现检查 table 的 parent 是否为 JViewport
。如果是这样,它将使用 setColumnHeaderView(...)
方法将 table header 添加到滚动窗格。
JScrollPane代码的哪一部分负责显示JTable的headers列?
如果您只是将 JTable 添加到 JPanel,默认情况下它不会显示 headers。您应该将 table 传递给 JScrollPane 的构造函数,或者使用 table 作为参数调用 JScrollPane setViewportView
。那么实际上,是什么让 headers 列可见?它是 JScrollPane 内部呈现的一部分(updateUI
和 getUI
方法)吗?
最初我认为 JScrollPane 使用它的 setColumnHeaderView
来完成这个,但它没有(将 null 传递给此方法,table 仍然会显示 headers)。
JTable
负责做这件事。
JTable
的 addNotify()
方法被覆盖。基本上当组件被添加到可见容器时调用此方法。
因此 JTable
实现检查 table 的 parent 是否为 JViewport
。如果是这样,它将使用 setColumnHeaderView(...)
方法将 table header 添加到滚动窗格。