有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您可以使用JTable:

     jTable.getColumModel().getColumn(columnIndex).setHeaderRenderer()
    

    您可以提供自己的单元渲染器来渲染标题