为什么选择行/单元格时,我的Java自定义单元格渲染器不会显示突出显示?
发布时间:2020-09-21 14:09:28 所属栏目:Java 来源:互联网
导读:我有一个自定义单元格渲染器为单元格做一个单词包装,所以更多的内容可以读取.这是代码: import java.awt.Color;import java.awt.Component;import java.awt.Insets;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.table.
|
我有一个自定义单元格渲染器为单元格做一个单词包装,所以更多的内容可以读取.这是代码: 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;
} (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
