Java JTable无法设置列宽 [英] Java JTable cannot set width of column

查看:502
本文介绍了Java JTable无法设置列宽的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试设置列的宽度,但是它根本没有用,我一直在寻找答案几个小时,这是我的代码,谁能告诉我是什么问题.预先感谢.

I try to set width for the columns, but it didn't work at all, I have been searching for answers for hours, and here is my code, can anyone tell me what is the problem. Thanks in advance.

    String [] columns = {"Day","StratTime","EndTime","Description"};
    mtbl = new DefaultTableModel();

    tbl = new JTable(mtbl);
    jsPane = new JScrollPane(tbl);

    tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);


    for (int i = 0; i < Timedcolumns.length; i++) {
        mtbl.addColumn(columns[i]);
        tbl.getColumnModel().getColumn(i).setPreferredWidth(100);
    }

推荐答案

由于addColumn()的结果,JTable可能最终重建了所有列.这是JTable.tableChanged()的片段:

As a result of addColumn(), JTable may end up rebuilding all the columns. Here is a snippet from JTable.tableChanged() :

public void tableChanged(TableModelEvent e) {
    if (e == null || e.getFirstRow() == TableModelEvent.HEADER_ROW) {
        ...

        if (getAutoCreateColumnsFromModel()) {
    // This will effect invalidation of the JTable and JTableHeader.
            createDefaultColumnsFromModel();
    return;
    }
        ...

由于DefaultTableModel执行addColumn()而触发

TableModelEvent.HEADER_ROW. addColumn执行fireTableStructureChanged:

TableModelEvent.HEADER_ROW is fired as a result of addColumn() execution by DefaultTableModel. addColumn executes fireTableStructureChanged:

public void fireTableStructureChanged() {
    fireTableChanged(new TableModelEvent(this, TableModelEvent.HEADER_ROW));
} 

最终您只能在添加的最后一列上设置首选大小,因为其余的列是由createDefaultColumnsFromModel()重新创建的.

You end up setting preferred size only on the last column that was added, as the rest of the columns were recreated by createDefaultColumnsFromModel().

总而言之,在单独的循环中创建所有列之后,设置首选大小可能更简单.

All in all, it is probably simpler to set preferred sizes after all the columns were created in a separate loop.

这篇关于Java JTable无法设置列宽的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆