当前位置: 首页 > 知识库问答 >
问题:

使用来自另一个单元格的数据

濮金鑫
2023-03-14

我有2列的jTable1。我想控制第1列的外观,所以我使用下面的代码根据单元格行是偶数还是奇数来设置单元格中的文本字体是否为粗体。

import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class CustomTableCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent (JTable table, Object obj,
        boolean isSelected, boolean hasFocus, int row, int column) {
    Component cell = super.getTableCellRendererComponent(
        table, obj, isSelected, hasFocus, row, column );
        if (row % 2 == 0){
            cell.setFont(getFont().deriveFont(Font.BOLD));
        }
        return cell;
    }
}

我称之为:

jTable1.getColumnModel().getColumn(1).setCellRenderer(new 
CustomTableCellRenderer());

我想要的是修改这个< code>TableCellRenderer,以便单元格背景将基于同一行上的另一列(列0)值来绘制。例如,如果第0列第5行的值是“book ”,则第1列第5行的单元格将为红色,如果第0列的值是“newspaper ”,则第1列的颜色为绿色。我的问题是我不知道如何将column0值传递给column1渲染器,这样它将用于更改颜色。

共有3个答案

裴鸿熙
2023-03-14

我发现了如何访问另一列数据:

import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class CustomTableCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent (JTable table, Object obj,
    boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(
    table, obj, isSelected, hasFocus, row, column );

    //I USE THIS TO ACCESS THE DATA FROM ANOTHER CELL!!!
    TableModel model = table.getModel();
    String media= (String) model.getValueAt(row, 0)


    if (row % 2 == 0){
        cell.setFont(getFont().deriveFont(Font.BOLD));
    }


   //SO I GET THE RESULT I WANT
   if ("book".equals(media)){
     cell.setBackground(Color.red)  
   }
   else{
     cell.setBackground(Color.green)
   }  



    return cell;
}
}
曹涵润
2023-03-14

如此处所示,您可以重写准备呈现器 () 以影响整行。

太叔经赋
2023-03-14

检查.getTableCellRendererComponent(…)方法的签名:您将获得对JTable(可以从中获取TableModel)的引用,以及当前行和列的索引

使用这些你可以查找任何你想要的相对值。

 类似资料:
  • 我有一个矩阵,所有单元格的值都是-1:1,还有一个数据框,它为我需要查找的每个单元格标识行/列单元格。 我想在包含矩阵中标识的单元格中的值的数据帧中添加列。我所拥有的和我想要的例子如下: 有矩阵: 有数据库: 需要数据帧:

  • 我想要的是让第一个textField更靠近第一个jlabel,在第一个textField和第二个jlabel之间有一些空间,像这样: JLabel:JTEXTFIELD-----(spaceeee)-------JLabel:JTEXTFIELD 但我所改变的一切都不能接近我想要的,你看:

  • 问题内容: 是否可以在带有子选择的mysql 5.0上运行UPDATE命令。 我要运行的命令是这样的: ISBN13当前存储为字符串。 这应该更新10k +行。 谢谢, 威廉 问题答案: 只需更改一下即可:

  • 我实际上有两种类型的数据: 我想用Hamcrest在我的身体响应中测试我的放心请求后,b(元素接收)是否包含来自a的一个或多个元素(

  • 我相信这很简单,但找不到答案。我有一个数据帧df: 然后,我有另一个较小的数据框,其中包含单元格引用(行号和列号),引用df中应为空的特定单元格(即NA): 我如何用NA替换df中所有由cellRefs中的行和列引用引用的单元格?

  • 我在我的项目中使用了mapstruct,它可以直接工作(所有的mapper都在一个包中)。现在我有了将一个映射器移动到另一个包的要求,但这并不能很好地工作。 你能帮我解决这个问题吗? 编辑包结构1的结果CarMapperImpl.java: