可能重复:
Swing - Setting the color of a cell based on the value of a cell
我有一个Spreadsheet类,包含一个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)
}
}
}
答案 0 :(得分:1)
偶然的事情:首先,你写的代码可以简单得多。 JTable提供开箱即用的getSelectedRow()
和getSelectedColumn()
方法,因此无需自行编写for
循环。
话虽如此,如果你只是想改变所选单元格的渲染方式,你可能实际上并不想做任何这样的事情。更改单元格渲染方式的方法是使用TableCellRenderer
。当JTable
需要渲染单元格时,它们会将有关该单元格的所有信息(其值,无论是否被选中等)传递给TableCellRenderer
。默认情况下安装了DefaultTableCellRenderer
,可将您的单元格设为JLabels
。您可以使用setDefaultRenderer()
设置自己的渲染器。在您的情况下,应该很容易扩展DefaultTableCellRenderer
,覆盖getTableCellRendererComponent()
来调用super()
,然后一旦super()
返回,如果单元格是,则将字体设置为粗体地选择。
JTable
的javadoc有一个指向JTable教程的链接,该教程有一个关于使用自定义渲染器的特殊部分。可以在http://docs.oracle.com/javase/tutorial/uiswing/components/table.html找到该教程(以及一些其他优秀的Swing教程)。