我有一个自定义单元格渲染器为单元格做一个单词包装,所以更多的内容可以读取.这是代码:
import java.awt.Color; import java.awt.Component; import java.awt.Insets; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.TableCellRenderer; public class textwrapCellRenderer extends JTextArea implements TableCellRenderer { private static final long serialVersionUID = 1L; public textwrapCellRenderer() { setLineWrap(true); setWrapStyleWord(true); setMargin(new Insets(0,5,5)); setSelectionColor(Color.GREEN); } public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) { setText((String)value); setSize(table.getColumnModel().getColumn(column).getWidth(),getPreferredSize().height); setSelectionColor(Color.GREEN); return this; } }
更新:单元格渲染器正确使用,但当用户在JTable中选择一行时,它仅显示非自定义渲染单元格的突出显示.高亮显示为该行的所有其他单元格.这只留下一个白色背景的单元格,而其余的单元格具有蓝色(在我的情况下)作为突出显示的背景颜色.
解决方法
您必须检查isSelected参数以查看单元格是否被选择,类似于:
public Component getTableCellRendererComponent(JTable table,int column) { setText((String)value); setSize(table.getColumnModel().getColumn(column).getWidth(),getPreferredSize().height); setSelectionColor(Color.GREEN); if (isSelected) { setBackground(table.getSelectionBackground()); setForeground(table.getSelectionForeground()); } else { setBackground(table.getBackground()); setForeground(table.getForeground()); } return this; }
原文地址:https://www.jb51.cc/java/125691.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。