Java JTable:如何更改特定单元格的属性(字体、颜色…?)

Java JTable:如何更改特定单元格的属性(字体、颜色…?),java,swing,fonts,jtable,cell,Java,Swing,Fonts,Jtable,Cell,可能重复: 我有一个电子表格类,包含一个JTable及其TableModel。 我的主窗口包含这个电子表格和按钮列表,例如一个粗体按钮 我可以成功地获得所选单元格(见下面的代码),但我不知道如何更改其内容、字体、颜色等 public void actionPerformed(ActionEvent e) { int rowToUpdate = -1, columnToUpdate = -1; for(int i = 0 ; i < tableToUpdate.getRow

可能重复:

我有一个电子表格类,包含一个JTable及其TableModel。 我的主窗口包含这个电子表格和按钮列表,例如一个粗体按钮

我可以成功地获得所选单元格(见下面的代码),但我不知道如何更改其内容、字体、颜色等

public void actionPerformed(ActionEvent e)
{
    int rowToUpdate = -1, columnToUpdate = -1;
    for(int i = 0 ; i < tableToUpdate.getRowCount() ; i++)
        for (int j = 0 ; j < tableToUpdate.getColumnCount() ; j++)
            if(tableToUpdate.isCellSelected(i, j)){ rowToUpdate = i; columnToUpdate = j; }

    if(rowToUpdate >= 0 && columnToUpdate >= 0)
    {
        if(e.getSource == boldButton)
        {
             // Here, how to change the bold of the cell(rowToUpdate,columnToUpdate)
        }
    }
}
public void actionPerformed(ActionEvent e)
{
int rowToUpdate=-1,columnToUpdate=-1;
对于(int i=0;i=0&&columnToUpdate>=0)
{
如果(e.getSource==boldButton)
{
//在这里,如何更改单元格的粗体(rowToUpdate、columnToUpdate)
}
}
}

两件事:首先,您编写的代码可以简单得多。JTable附带了现成的
getSelectedRow()
getSelectedColumn()
方法,因此无需为
循环编写

也就是说,如果您只是试图更改所选单元格的渲染方式,那么您可能实际上并不想执行任何操作。更改单元格渲染方式的方法是使用
TableCellRenderer
。当
JTable
s需要渲染单元格时,它们会将有关该单元格的所有信息(其值、是否选中等)传递给
TableCellRenderer
。默认情况下安装了一个
DefaultTableCellRenderer
,它将单元格呈现为
JLabels
。您可以使用
setDefaultRenderer()
设置自己的渲染器。在您的情况下,应该很容易扩展
DefaultTableCellRenderer
,重写
GetTableCellRenderComponent()
调用
super()
,然后在
super()
返回后,如果选择了单元格,则将字体设置为粗体

JTable
的javadoc有一个到JTable教程的链接,该教程有一个关于使用自定义渲染器的特殊部分。该教程(以及其他一些很棒的Swing教程)可以在上找到