2013-08-02 65 views
2

大家早上好。我有一个Multilinecellrenenderer,它根据单元格的内容改变jtable行的高度。如何在JTable中的cellrenenderer外设置桌面高度

public Component getTableCellRendererComponent(JTable table, Object 
     value, boolean isSelected, boolean hasFocus, int row, int column) { 
    setText(value.toString());//or something in value, like value.getNote()... 
    if (isSelected) { 
     setForeground(table.getSelectionForeground()); 
     setBackground(table.getSelectionBackground()); 
    } else { 
     setForeground(table.getForeground()); 
     setBackground(table.getBackground()); 
    } 
    setSize(table.getColumnModel().getColumn(column).getWidth(), 
      getPreferredSize().height); 
    if (table.getRowHeight(row) <= getPreferredSize().height) { 
      table.setRowHeight(row, getPreferredSize().height); 
    } 
    return this; 
} 

据我了解,修改渲染器内的JTable使其在无限循环运行和在我的代码,我使用的日志报表验证发生。我也明白,我可以在添加模型内容的同时修改行高,并且我已经尝试了我所知道的所有内容,但我无法设置renenderer外部行的高度。任何人都可以请帮助我,我怎样才能拨打table.setRowHeight(int,int)以外的细胞renenderer。

我动态使用下面的语句

for(ProductRow object: data){ 
     model.addRow(new Object[]{object.getProductNumber(),object.getDescription(), 
       object.getLastTouchedOn(),object.getLastTouchedBy()}); 
     } 

我只是不知道如何让当前的行号,首选高度增加了模型的内容。请帮帮我。谢谢

+2

对于[示例](http://stackoverflow.com/a/11179669/230513)。 – trashgod

+1

非常感谢,它的工作就像魅力 – Ashish

+0

@trashgod作为答案:D – nachokk

回答

2

由于@mKorbel在此example中显示,您可以从封闭组件的首选尺寸推导出所需的尺寸setRowHeight()。请务必在随后致电pack()封闭框架。