改变颜色或其他方式的短路

时间:2011-11-10 07:03:47

标签: java colors

如何将颜色类型更改为短颜色或短颜色? 实际上,我正在使用HSSFCellStyle类的setFillForegroundColor方法。 我需要将颜色传递给我的方法并使用该函数。 但是,它以短型为对象 有什么方法可以将其更改为我所需的类型,或者是否有其他方法可以帮助我设置前景色?

当我从用户偏好中获取颜色时,我之前不知道颜色。 所以,我不能使用颜色索引。 请给我一些建议。 我的代码如下所示:

private void setBackgroudColorOfRow(HSSFWorkbook wb, HSSFRow row, Color bgColor) {
            HSSFCell cell;
            //Iterate through each cell and colour with light orange to 
            //differentiate the summary row with detail rows
            for (Iterator it = row.cellIterator(); it.hasNext();) {
                cell = (HSSFCell) it.next(); // row.getCell(j);
                if(cell.getColumnIndex() > 1)
                {
                    HSSFCellStyle style = wb.createCellStyle();
                    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  
                    style.setFillForegroundColor(bgColor);

好的,让我重新构建我的问题,或者简单地缩短它:

如果我的颜色代码是字符串,或者我有颜色名称,我如何获得颜色代码索引?如何获得颜色代码索引?

2 个答案:

答案 0 :(得分:1)

style.setRightBorderColor(HSSFColor.BLACK.index);

请参阅此处理自定义颜色。

http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors


//为工作簿创建自定义调色板     HSSFPalette palette = wb.getCustomPalette();

//replacing the standard red with freebsd.org red
palette.setColorAtIndex(HSSFColor.RED.index,
        (byte) 153,  //RGB red (0-255)
        (byte) 0,    //RGB green
        (byte) 0     //RGB blue
);

答案 1 :(得分:1)

private Short getColorIndex(String colorStr, HSSFWorkbook wb) {
       //in this method string containing RGB component is passed
       //and corresponding color index is obtained and returned. 
       short index = 0;
       String[] rgb = colorStr.split(",");
       System.out.println(colorStr+"--------------");

       Integer red = Integer.parseInt(rgb[0]);
       Integer green = Integer.parseInt(rgb[1]);
       Integer blue = Integer.parseInt(rgb[2]);

       palette = wb.getCustomPalette();
       HSSFColor color = palette.findSimilarColor(red, green, blue);
       if(color != null){
            index = color.getIndex();
       }
       else{
           index = IndexedColors.LIME.getIndex();
       }
       return index;
    }

此方法返回了我的颜色索引。虽然它满足了我的要求,但我仍然没有得到我的确切颜色。如果有人可以提出任何建议。否则它工作正常。而且findColor(byte,byte,byte)返回同样的东西。

除非你想使用findColor(byte,byte,byte)方法,你也可以将'int'改为'byte'