java - 在 JTable 上调用 setRowHeight 会立即重置 int 方法参数

标签 java swing jtable

我无法理解为什么会发生这种情况。我一直在网上搜索类似的问题,但找不到。

for ( int row = 0; row < getRowCount(); row++ ) {
        int rowHeight = this.getRowHeight();
        for ( int col = 0; col < this.getColumnCount(); col++ ) {
           Component pRenderer = getCellRenderer( row, col );
        // Assume this is a dimension of 120x120
        Dimension pRendererSize = pRenderer.getPreferredSize();
           if ( pRendererSize.height  > rowHeight )
            rowHeight = pRendererSize.height;
        }
     this.setRowHeight( row, rowHeight );
}

我的 JTable 中一行的默认高度是 16 像素。如果我打电话:

//This returns 16 initially
this.getRowHeight();

我正在我的调试器中单步调试代码。在 setRowHeight 行,参数 rowHeight 为 120,因此我将行的 rowHeight 设置为 120 像素。我根本没有重载这个方法,这是 setRowHeight 的 JTable 实现。

接下来发生的事情真是令人恐惧。跨过这个方法后,this.getRowHeight()不仅返回16像素,而且rowHeight的值立马变成了16像素。

当然,表格也呈现不正确。这似乎违背了我的 int 值类型参数会通过将其传递给方法而改变的感觉。这根本不应该改变 rowHeight 变量。您认为我的调试器是在旧代码上运行、已损坏还是时代结束了?

最佳答案

这是我用来设置行高的代码:

private void updateRowHeights()
{
    try
    {
        for (int row = 0; row < table.getRowCount(); row++)
        {
            int rowHeight = table.getRowHeight();

            for (int column = 0; column < table.getColumnCount(); column++)
            {
                Component comp = table.prepareRenderer(table.getCellRenderer(row, column), row, column);
                rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
            }

            table.setRowHeight(row, rowHeight);
        }
    }
    catch(ClassCastException e) {}
}

UIManager Defaults使用此代码。单击“按值类型”,然后选择“图标”以查看其工作情况。

关于java - 在 JTable 上调用 setRowHeight 会立即重置 int 方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981335/

相关文章:

java.lang.NoSuchMethodError : in redisson and netty integration 错误

java - 在 Windows 7 上创建文件会导致 "Access denied"异常

java - 我在更换 jpanel 上的 jmenubar 时遇到问题

Java 8u161/8u162 使 Swing 应用程序使用 CPU

java - 程序执行和GUI

java - 如何在我的 Windows 机器上找到 JDK 的安装位置?

java - Kurento 复合网格录制

java - java中的自定义表格单元格编辑器,列数据类型为Float

java - 如何更改 Netbeans 中的 JTable 标题单元格颜色

java - 如何使用%符号格式化JTable单元格?