Java JTable-如何更改特定列标题的字体

Java JTable-如何更改特定列标题的字体,java,swing,jtable,tablecellrenderer,jtableheader,Java,Swing,Jtable,Tablecellrenderer,Jtableheader,我想更改JTable上所选列标题的字体。我尝试在我的专栏HeaderRenderer上这样做,如下所示: public class ColumnHeaderRenderer extends JLabel implements TableCellRenderer { public ColumnHeaderRenderer(JTable table) { JTableHeader header = table.getTableHeader(); setOpaque(true);

我想更改
JTable
上所选列标题的字体。我尝试在我的
专栏HeaderRenderer
上这样做,如下所示:

public class ColumnHeaderRenderer extends JLabel implements TableCellRenderer {

public ColumnHeaderRenderer(JTable table) {
    JTableHeader header = table.getTableHeader();
    setOpaque(true);
    setBorder(BorderFactory.createEtchedBorder());
    setHorizontalAlignment(CENTER);
    setForeground(header.getForeground());
    setBackground(header.getBackground());
    setFont(header.getFont());
    setPreferredSize(new Dimension(0, 25));

}

public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {

    Color bg = UIManager.getColor("TableHeader.background");
    int selectedColumn = table.getSelectedColumn();
    if (selectedColumn == column){
        bg = new Color(107, 142, 35);
        setFont(getFont().deriveFont(Font.BOLD));// !!!!trying to do it here!!!!
    }
    setBackground(bg);
    setText(value.toString());
    return this;
}

}

但结果是所有列标题字体都发生了更改。那么,如何仅更改选定列的值呢?

您需要重置这些值

if (selectedColumn == column){
    bg = new Color(107, 142, 35);
    setFont(getFont().deriveFont(Font.BOLD));// !!!!trying to do it here!!!!
} else {
    setFont(UIManager.getFont("TableHeader.font"));
}

渲染是一个共享资源,因此所有标题共享相同的渲染。这意味着,如果将渲染器的状态从一个过程更改为另一个过程,则使用渲染器渲染的下一个元素将获得以前使用的所有属性…

您需要重置这些值

if (selectedColumn == column){
    bg = new Color(107, 142, 35);
    setFont(getFont().deriveFont(Font.BOLD));// !!!!trying to do it here!!!!
} else {
    setFont(UIManager.getFont("TableHeader.font"));
}

渲染是一个共享资源,因此所有标题共享相同的渲染。这意味着,如果将渲染器的状态从一个过程更改为另一个过程,则使用渲染器渲染的下一个元素将获得您以前使用的所有属性…

+1,我昨天投了赞成票,但没有注意到您已达到100k。恭喜:)@camickr谢谢,真的厌倦了99.8:P+1,我昨天投票了,但没注意到你已经达到了10万分。恭喜:)@camickr谢谢,真的厌倦了看99.8:P