有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing在Java中使用不同的RGB值获得相同的颜色

我正在使用jxl读取Excel文件。我需要根据单元格的字体颜色做出决定。我得到的单元格的字体颜色是黑色,但RGB值是(1,0,0)

当我把它和颜色比较时。黑色它无法通过==比较,因为颜色的RGB值。黑色是(0,0,0)

Colour color = nameCell.getCellFormat().getFont().getColour();
if(color == Colour.BLACK) //fails this test 
     options = "0";
else
     options = "1";

在上面的代码中color.getDescription()给出了黑色的描述

我怎样才能发现“黑色”在Colour.BLACKnameCell.getCellFormat().getFont().getColour()两个对象中都是常见的呢


共 (2) 个答案

  1. # 1 楼答案

    您需要一种在Java中比较颜色的方法

    你可以在这里找到相关信息:how could i compare colors in java?

    不管怎样:

    1. 你需要为平等而不是身份进行比较,所以: color == Color.BLACK必须翻译成Color.BLACK.equals(color)

    2. 由于需要进行近似比较,因此需要一种方法来计算颜色之间的距离,并迫使其低于(实验确定的)值

    下面是一个例子:

     public static double distance (Color c1, Color c2){
       double deltaRed=Math.pow((c1.getRed()-c2.getRed())/255.0,2.0);
       double deltaBlue=Math.pow((c1.getBlue()-c2.getBlue())/255.0,2.0);
       double deltaGreen=Math.pow((c1.getGreen()-c2.getGreen())/255.0,2.0);
       double total=Math.sqrt((deltaRed+deltaBlue+deltaGreen)/3.0);
       return total;
     }
    
     Color color  = nameCell.getCellFormat().getFont().getColor();
     if(distance(color,Color.BLACK) < 0.02)
         options = "0";
     else
         options = "1";    
    
  2. # 2 楼答案

    rgb(1,0,0)是一种非常深的灰色

    试试看

    if (r <2 && g < 2 && b < 2) ....