多个标头插入后JTable更新列标题高度

时间:2013-09-15 21:20:58

标签: java swing jtable tablecellrenderer preferredsize

当我向表中添加新列但其标题标签包含的行数(使用htmlbr元素)比已经存在的标题中的行更多时应该调用/触发的内容因此标题将调整大小相应?

添加之前 Before adding

添加后 enter image description here

如果第一次绘制表时列没有该行数(当标签为<html>Card<br>name</html>时),则不会发生这种情况。

enter image description here

我添加新记录时fireTableStructureChanged() TableModel,因此添加了新列。

1 个答案:

答案 0 :(得分:2)

从@ mKorbel的example开始,以下按钮会改变外观,如图所示。 setColumnIdentifiers()的方法DefaultTableModel代表您调用fireTableStructureChanged()。如果您延长AbstractTableModel,则应在TableModel

中执行此操作

before after

代码:

private DefaultTableModel model = new DefaultTableModel(data, columnNames) {…}
…
frame.add(new JToggleButton(new AbstractAction("Toggle") {
    @Override
    public void actionPerformed(ActionEvent e) {
        JToggleButton b = (JToggleButton) e.getSource();
        if (b.isSelected()) {
            columnNames[0] = "<html>String<br>of pearls</html>";
        } else {
            columnNames[0] = "String";
        }
        model.setColumnIdentifiers(columnNames);
    }
}), BorderLayout.SOUTH);