【问题标题】:JTable change cell colors using TableCellRendererJTable 使用 TableCellRenderer 更改单元格颜色
【发布时间】:2011-08-13 08:38:37
【问题描述】:

我在我的 GUI 应用程序中使用 JTable 作为网格来表示游戏的位置。我希望代表对象某个位置的表格单元格具有某种颜色,并且在某些操作中,要移动的对象(即在网格/JTable 中移动的颜色单元格)。我知道我可以通过创建一个扩展 DefaultTableCellRenderer 的类来更改单元格颜色,这是唯一可以做到的方法吗?还是有更简单的方法来更改单元格颜色?对于这样的应用程序,JXTable 是否比 JTable 更好?

编辑:我没有包括我需要某些单元格颜色来动态更改的事实,即通过按钮点击、键盘点击...等,任何TableCellRenderer 仍然可能如果我还在使用 JTable 吗?

谢谢,

【问题讨论】:

    标签: java swing user-interface jtable cellrenderer


    【解决方案1】:

    使用 JTable,DefaultTableCellRenderer 是最好的方法。

    但是,如果您使用 JXTable,则使用 Highlighter 和自定义谓词会容易得多。通常,谓词用于根据单元格的内容进行着色,但您也可以轻松地根据行/列和一些外部值对其进行着色。

    在Rendering and Highlighting下查看http://www.jarvana.com/jarvana/view/org/swinglabs/swingx-core/1.6.2/swingx-core-1.6.2-javadoc.jar!/org/jdesktop/swingx/JXTable.html,这是一个条纹表和模式匹配。基本上你会做与模式荧光笔相同的事情,但使用你自己的谓词。

    【讨论】:

    • 如何动态地做到这一点?如果我需要单击更改单元格颜色的按钮或使键盘单击更改单元格颜色,它的工作方式是否相同?谢谢你
    【解决方案2】:

    作为替代方案,请考虑使用@mKorbel 建议的prepareRenderer(),并在文章Table Row Rendering 中显示。

    【讨论】:

    • 我可以在按钮操作上使用 prepareRenderer() 来更改一个单元格或一组单元格的颜色吗?
    • 是的,如果状态是行和列的纯函数。另请参阅this answer
    猜你喜欢
    • 2011-08-06
    • 2011-11-03
    • 2018-08-20
    • 2011-08-14
    • 2011-09-24
    • 2014-08-24
    • 2020-08-25
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多