【问题标题】:Java-JTable : how can I change the attributes of a specific cell (font, color...?) [duplicate]Java-JTable:如何更改特定单元格的属性(字体,颜色......?)[重复]
【发布时间】:2013-01-03 17:40:20
【问题描述】:

可能重复:
Swing - Setting the color of a cell based on the value of a cell

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

【问题讨论】:

    标签: java swing fonts jtable cell


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-17
      • 2015-01-28
      • 2011-08-06
      • 1970-01-01
      • 2019-09-09
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多