-1

可能重复:
Swing - 根据单元格的值设置单元格的颜色

我有一个电子表格类,其中包含一个 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)
        }
    }
}
4

1 回答 1

1

几件事:首先,您编写的代码可能要简单得多。JTable 带有开箱即用getSelectedRow()getSelectedColumn()方法,因此无需for自己编写循环。

话虽如此,如果您只是想更改所选单元格的呈现方式,那么您可能实际上并不想这样做。更改单元格呈现方式的方法是使用TableCellRenderer. 当JTables 需要渲染一个单元格时,它们会将有关该单元格的所有信息(其值、是否被选中等)传递给 a TableCellRendererDefaultTableCellRenderer默认情况下安装了一个,它将您的单元格呈现为JLabels. 您可以使用setDefaultRenderer(). 在您的情况下,应该很容易扩展DefaultTableCellRenderer,覆盖getTableCellRendererComponent()调用super(),然后一旦super()返回,如果选择了单元格,则将字体设置为粗体。

javadocJTable有一个指向 JTable 教程的链接,其中有一个关于使用自定义渲染器的特殊部分。可以在http://docs.oracle.com/javase/tutorial/uiswing/components/table.html找到该教程(以及许多其他很棒的 Swing 教程) 。

于 2013-01-20T16:15:55.930 回答