Jtable重载绘制器,实现单元格自动换行和选中高亮

本文介绍了如何将JTable单元格重载为JTextArea,并实现了选择行的高亮显示效果。通过计算每行的最佳高度,确保了表格的美观性和功能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

//重载绘制器-Jtable默认继承jlable, 改为继承jtextarea 
 class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {
  public TableCellTextAreaRenderer() {
  setLineWrap(true);
  setWrapStyleWord(true);
  }

  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
   
   
   //设置选择行高亮
    if (isSelected || row == selected_row) {
              this.setForeground(table.getSelectionForeground());
              this.setBackground(table.getSelectionBackground());
       }else { 
                  this.setForeground(Color.BLACK);
                  this.setBackground(table.getBackground());
       }

 
 
  // 计算当下行的最佳高度
  int maxPreferredHeight = 0;
  for (int i = 0; i < table.getColumnCount(); i++) {
  setText("" + table.getValueAt(row, i));
  setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
  maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
  }

  if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
  table.setRowHeight(row, maxPreferredHeight);

  setText(value == null ? "" : value.toString());
  return this;
  }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值