- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的代码显示了 2 个 JTable。
因为它们都具有完全相同的标题,所以为了提高效率,我希望重用第一个表中的标题。
然而,运行代码会导致标题出现在第二个表中,但不会出现在它最初来自的表中。
我对解决方法不太感兴趣,但是 - 为了学习和理解 - 更感兴趣的是找出标题没有出现在第一个表中的原因。
代码如下:
public class HeaderTest1 {
public void doTheTest() {
JFrame testFrame = new JFrame("Header Test");
JPanel pane = new JPanel();
Container theContentPane = testFrame.getContentPane();
BoxLayout box = new BoxLayout(pane, BoxLayout.Y_AXIS);
pane.setLayout(box);
theContentPane.add(pane);
String theData[][]
= {
{"One", "two", "3"},
{"four", "5", "six"},
{"7", "8", "9.0"},
{"£10.00", "11", "twelve"}
};
String columnNames[] = {"Column 1", "Column 2", "Column 3"};
JTable firstTable = new JTable(theData, columnNames);
JScrollPane thisScrollPane = new JScrollPane(firstTable);
JTableHeader thisTableHeader = firstTable.getTableHeader();
pane.add(thisScrollPane);
buildTheSecondTable(thisTableHeader, firstTable, columnNames, pane);
testFrame.pack();
testFrame.setVisible(true);
}
private void buildTheSecondTable(JTableHeader headerFromTheFirstTable,
JTable firstTable, String[] columnNames, JPanel pane) {
JTable secondTable = new JTable();
int columnCount = columnNames.length;
JScrollPane thisScrollPane = new JScrollPane(secondTable);
secondTable.setTableHeader(headerFromTheFirstTable);
Object[][] emptyData = new Object[1][columnCount];
for (int n = 0; n < columnCount; n++) {
emptyData[0][n] = "";
}
DefaultTableModel thisTableModel = new DefaultTableModel();
thisTableModel.setDataVector(emptyData, columnNames);
secondTable.setModel(thisTableModel);
secondTable.setLayout(firstTable.getLayout());
secondTable.setCellEditor(firstTable.getCellEditor());
pane.add(thisScrollPane);
}
public static void main(String[] args) throws SQLException, ParseException {
HeaderTest thisTest = new HeaderTest();
thisTest.doTheTest();
}
如有任何建议,我们将不胜感激
最佳答案
一个 Swing 组件只能有一个父组件,因此您不能共享表头组件。
但是您可以共享列名数组:
JTable firstTable = new JTable(theData, columnNames);
在您的 buildTheSecondTable
方法中,您可以访问列名数组,因此只需使用:
//DefaultTableModel thisTableModel = new DefaultTableModel();
DefaultTableModel thisTableModel = new DefaultTableModel(columnNames);
然后您可以将数据添加到模型中,并将模型添加到表中。
然后在将模型添加到表格后重新排序代码以创建 JScrollPane。
此外,去掉 table.setLayout() 代码。您永远不会在表格上使用布局管理器。您不向表中添加组件。该表在不使用真实组件的情况下呈现数据本身。
关于java - 重新使用 JTableHeader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004260/
我试图让我的 JTableHeader 的工具提示显示它所属列的宽度,但它不起作用。工具提示未显示。 这是我的JTableHeader: myTable.setModel(new DefaultTab
我想实现与此类似的标题样式: 如何实现这一点? 到目前为止我所拥有的是: JTableHeader header = table.getTableHeader(); header.se
下面的代码显示了 2 个 JTable。 因为它们都具有完全相同的标题,所以为了提高效率,我希望重用第一个表中的标题。 然而,运行代码会导致标题出现在第二个表中,但不会出现在它最初来自的表中。 我对解
我正在使用此代码: Border border = BorderFactory.createLineBorder(Color.green); DefaulTableModel dtm= new Def
我花了很多时间搜索它,但只找到了 GroupableHeader 代码。我需要一个 2 列 JTable 中超过 2 列的标题。如何在不使用臭名昭著的 GroupableHeader 的情况下做到这一
我正在使用 JTable + JScrollPane + DefaultTableModel。 我需要在 JTableHeader 上实现 Drag-n-Drop。我想将一个列标题拖到我的组件中,并根
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Accessing a JTextField in JTableHeader 如何使 JTableHeade
我试图更改 jTableHeader 的背景颜色和字体大小,但它只更改背景颜色。代码如下: DefaultTableCellRenderer centerRenderer = new DefaultT
这是我的第一篇文章,因此任何有关如何使我的文章变得更好的建议都很棒! 借助该网站的研究,我能够生成一个表格,可以更改其字体、更改对齐方式并保持当前的外观和感觉。但是,我无法更改颜色,并且不确定该怎么做
我的程序中有一个 JTable,我想更改 JTableHeader 的颜色。我使用以下代码完成了此操作 JTableHeader header = table.getTableHeader(); he
我试过以下, foo.getTableHeader().setLayout(new FlowLayout(FlowLayout.LEFT)); 其中 foo 是 JTable 实例,但文本保持居中。为
我制作了一个 TableHeader 渲染器,它将在 JTable 的标题标签下创建一个 JTextfield。我现在遇到的问题是,我从来没有在标题中获得焦点/访问此 JTextfield。 我发现
我一直在尝试使用 Oracle's How To Use Tables 中的代码创建一个带有每个列标题工具提示的 JTable。 The demo似乎可行,但无论我直接粘贴代码还是抽象自己的类,在调用
我有两个 JTable,它们必须彼此同步。这两个JTable都设置为允许记录。 所以我想知道如何在列移动时同步 JTableHeader 行为。 非常感谢,伙计。 最佳答案 为此,您可以使用具有 co
给定 JTable具有 Boolean.class 类型的列,default renderer是一个JCheckBox。根据 user selection 选择单个单元格非常容易。 ,但选择所有复选框
给定一个 JTable具有 Boolean.class 类型的列,default renderer是一个 JCheckBox。根据 user selection 选择单个单元格很容易。 ,但也可以方便
我已经创建了一个类似的帖子,我在编辑中提出了这个问题。但我认为不会有很多人会这样看。我的问题是,如何更改 JTableHeader 的背景颜色(即列的颜色)。我知道正常情况 table.getHead
我是一名优秀的程序员,十分优秀!