1 import java.awt.Color;
2 import jxl.format.Colour;
3
4 public class ColorUtil {
6 public static Colour getNearestColour(Color awtColor) {
7 Colour color = null;
8
9 Colour[] colors = Colour.getAllColours();
10 if ((colors != null) && (colors.length > 0)) {
11 Colour crtColor = null;
12 int[] rgb = null;
13 int diff = 0;
14 int minDiff = 999;
15
16 for (int i = 0; i < colors.length; i++) {
17 crtColor = colors[i];
18 rgb = new int[3];
19 rgb[0] = crtColor.getDefaultRGB().getRed();
20 rgb[1] = crtColor.getDefaultRGB().getGreen();
21 rgb[2] = crtColor.getDefaultRGB().getBlue();
22
23 diff = Math.abs(rgb[0] - awtColor.getRed())
24 + Math.abs(rgb[1] - awtColor.getGreen())
25 + Math.abs(rgb[2] - awtColor.getBlue());
26
27 if (diff < minDiff) {
28 minDiff = diff;
29 color = crtColor;
30 }
31 }
32 }
33 if (color == null)
34 color = Colour.BLACK;
35 return color;
36 }
37 //Color转换为16进制显示
38 public static String toHexEncoding(Color color) {
39 String R, G, B;
40 StringBuffer sb = new StringBuffer();
41
42 R = Integer.toHexString(color.getRed());
43 G = Integer.toHexString(color.getGreen());
44 B = Integer.toHexString(color.getBlue());
45
46 R = R.length() == 1 ? "0" + R : R;
47 G = G.length() == 1 ? "0" + G : G;
48 B = B.length() == 1 ? "0" + B : B;
49
50 sb.append("0x");
51 sb.append(R);
52 sb.append(G);
53 sb.append(B);
54
55 return sb.toString();
56 }
57
58 //把字符串表达的颜色值转换成java.awt.Color
59 public static Color parseToColor(final String c) {
60 Color convertedColor = Color.ORANGE;
61 try {
62 convertedColor = new Color(Integer.parseInt(c, 16));
63 } catch(NumberFormatException e) {
64 // codes to deal with this exception
65 }
66 return convertedColor;
67 }
68 public static Colour getColour(final String c) {
69 Color cl=parseToColor(c);
70 return getNearestColour(cl);
71 }
72 //
73 }