java如何在选择单元格时设置JTable标题背景色
我可以成功地设置整个JTable标题的背景色
一般来说,这看起来像这样:
m_table.getTableHeader().setBackground(new Color(205,209,235));
我被卡住的地方是当一个单元格被选中时,我有一个ListSelectionListener
我想将标题中当前选定列的背景设置为另一种颜色。(不是当前单元格的背景,这很简单)
更新:
我创造了这个:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import com.ee.common.StringUtil;
public class myHeaderRenderer extends DefaultTableCellRenderer
{
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if( table != null )
{
if ( isSelected ) {
table.getTableHeader().setBackground(Color.orange);
}
else {
table.getTableHeader().setBackground(new Color(205,209,235));
}
}
return null;
}
}
我试着这样设置:
class WorksheetTable extends JTable implements EEObjectSource, EEObjectTarget {
public WorksheetTable(WorksheetTableModel model) {
super(model);
setTableHeader(new EditableJTableHeader(getColumnModel()));
}
@Override
public void createDefaultColumnsFromModel() {
super.createDefaultColumnsFromModel();
setTableHeader(new EditableJTableHeader(getColumnModel()));
getTableHeader().setToolTipText("Double Click to Edit, Right Click for more options");
for (int i=0; i<getColumnCount(); i++) {
getColumnModel().getColumn(i).setPreferredWidth(150);
getColumnModel().getColumn(i).setWidth(150);
getColumnModel().getColumn(i).setHeaderRenderer(new myHeaderRenderer());
}
当表第一次绘制时,我得到运行时空指针。。。错过了一些愚蠢的事情
# 1 楼答案
您可以使用JTable:
您可以提供自己的单元渲染器来渲染标题