java - 为 JTable 指定列特定的 TableCellRenderer

标签 java swing jtable tablecellrenderer tablecolumn

我有一个 JTable,其中包含多个显示 double 值的列,其中一些是比率,另一些是美元值。我想指定一个 TableCellRenderer 用于比率,另一个用于美元值。

Java 教程说“要指定特定列中的单元格应使用渲染器,您可以使用 TableColumn 方法 setCellRenderer”。这很有用,但我不清楚什么时候应该在我的 TableColumn 上调用此方法。有这样做的标准方法吗?我应该制作一个自定义的 JTable 在其构造函数中执行此操作吗?还是自定义 TableColumnModel?理想情况下,我希望能够从我已经拥有的自定义 TableModel 中执行此操作,尽管这似乎不太可能。

如有任何帮助,我们将不胜感激。谢谢

最佳答案

您可以通过这种方式在列上设置渲染器:

table.getColumnModel().getColumn(0).setCellRenderer(new TableRendererExample());

你可以编写自己的渲染器实现:

  class TableRendererExample extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
      if (column == 1) {
        c.setForeground(Color.gray);
      }
      return c;
    }
  }

关于java - 为 JTable 指定列特定的 TableCellRenderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184497/

相关文章:

java - 在java中初始化实例变量时使用 'this'?

java - selenium webdriver 模式对话框 java

Java,大型 GUI 类,带有许多 ActionListeners;组织听众的最佳方式?

java - 线程中的异常 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : 1

java - 单击行时如何在鼠标附近显示图像

java - 如何在 Hibernate 中保留递归属性?

java - Spring 事务管理是否与 Spring WebFlux 一起使用?

Java Swing BoxLayout

java - 如何将jtable和JTextfield结合起来打印?

java - 值 setValueAt()