2

GWTクライアント側でColorを使用したいのですが、

こんな色が欲しい

                 public static Color myColor = new Color( 152, 207, 204) ;

このインポートを使用する場合

                    import java.awt.Color;

クライアント側では、エラーが発生します。

             No source code is available for type java.awt.Color; did you forget to inherit a required module

CSSを使用せずに、GWTクライアント側でRGBカラーを使用するにはどうすればよいですか。

4

4 に答える 4

5

シンプルな RGB から文字列へのコンバーターを作成できます。

public final  class Helper {
    public static String RgbToHex(int r, int g, int b){
      StringBuilder sb = new StringBuilder();
      sb.append('#')
      .append(Integer.toHexString(r))
      .append(Integer.toHexString(g))
      .append(Integer.toHexString(b));
      return sb.toString();
    }
}

そしてそれを使用します:

nameField.getElement().getStyle().setBackgroundColor(Helper.RgbToHex(50, 100, 150));

- -アップデート - -

負の値、255 より大きい値、および 0 ~ 15 の値を制御する、より複雑な方法。

  public static String RgbToHex(int r, int g, int b){
    StringBuilder sb = new StringBuilder();
    sb.append('#')
    .append(intTo2BytesStr(r))
    .append(intTo2BytesStr(g))
    .append(intTo2BytesStr(b));
    return sb.toString();
  }

  private static String intTo2BytesStr(int i) {
    return pad(Integer.toHexString(intTo2Bytes(i)));
  }

  private static int intTo2Bytes(int i){
    return (i < 0) ? 0 : (i > 255) ? 255 : i;
  }

  private static String pad(String str){
    StringBuilder sb = new StringBuilder(str);
    if (sb.length()<2){
      sb.insert(0, '0');
    }
    return sb.toString();
  }
于 2013-03-14T08:25:32.037 に答える
2

の AWT クラスを使用していColorます。

GWT != Java .  //so gwt compiler wont compile the awt classes 

代わりに、このサードパーティ カラー クラスを使用してください。

そのクラスを にコピーして、utility packageで使用するだけclient sideです。

于 2013-03-14T07:36:07.097 に答える
0

FFire による回答からのメソッドのより正しいバージョンを次にRgbToHex示します (このバージョンは、r/g/b 値が 16 未満の場合に正しく機能します)。

public static String rgbToHex(final int r, final int g, final int b) {
  return "#" + (r < 16 ? "0" : "") + Integer.toHexString(r) + (g < 16 ? "0" : "") +
         Integer.toHexString(g) + (b < 16 ? "0" : "") + Integer.toHexString(b);
}

もちろん、必要に応じて使用することもできますStringBuilder

于 2013-03-18T04:54:38.060 に答える