如果只是将JTable添加到JPanel中,默认情况下它不会显示头部。您应该将该表传递给JScrollPane的构造函数,或者使用该表作为参数调用JScrollPaneSetViewPortView
。那么实际上,是什么使列标题可见呢?它是JScrollPane(updateui
和getui
方法)内部呈现的一部分吗?
最初我认为JScrollPane使用它的setColumnHeaderView
来实现这一点,但它没有(将null传递给这个方法,表仍然会显示头部)。
JTable
负责执行此操作。
重写JTable
的addnotify()
方法。基本上,当组件添加到可见容器时调用此方法。
因此,jtable
实现检查表的父表是否是jviewport
。如果是,则使用setColumnHeaderView(...)
方法将表头添加到滚动窗格中。
我不知道如何解决这个问题,我似乎找不到一个会导致它失败的问题。下面是GUI代码的其余部分。它很长。将jtable添加到jpanel从第152行开始。
通过单击Experiment Parameters选项卡中的一个按钮(参见下面的屏幕截图),我创建并运行一个“PreviewAction”,它创建了一个新的选项卡,并用必要的组件填充它。下面是的代码。编辑:我还发布了一个自包含的最小版本,它模拟了真实项目中的条件,并展示了相同的行为。 这里至少存在两个问题: (或)根本不呈现 没有框架本身那么宽,我不知道为什么 我在挥杆方面不是很好,所以我可能错过
我有一个显示良好的JTable。如果我将表放在JScrollPane中,它将不再显示。为什么不呢?我想在自己的JScrollPane中添加两个表。下面是我的代码,其中我只尝试向第一个表添加一个JScrollPane: 谢了。
问题内容: 我有一个JTable,其中填充了扩展AbstractTableModel的类。问题在于列太短而无法显示列名。我关闭了Jtable AutoResizeMode属性,但是仍然会缩短。我该如何解决? 问题答案: 设置autoresizemode只能防止调整JTable的列大小。要强制使用特定宽度,请检索表列模型: 并设置所需的宽度: