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教程)可以在上找到