java version 1.6.0_20 でSwingworkerが動かない事がある

当現象のサンプル
Swingworker sw1
Swingworker sw2
の二つがあり、
sw1のスレッド内でsw2のスレッドを起動し、終了を待つプログラム。

この時、sw2のスレッドが実行されず、終了待ちで無限ループが発生。

おまけ、マイナーバージョンの比較

・動かない
20

・動く
16
22
23(現時点での最新)

JavaのColor を HTMLの#FFFFFF型に変換するメソッド

Java の Color を HTML の色指定方法に変換するメソッド

  public String toHtmlColor(Color col) {
    // nullなら白を返す。
    if (col == null) {
      return “#FFFFFF”;
    }
    StringBuilder sb = new StringBuilder();
    sb.append(“#”);

    // 16進数で赤成分を取得、セット
    String colCode = Integer.toHexString(col.getRed());
    sb.append(colCode.length() == 1? “0” + colCode: colCode);

    // 16進数で緑成分を取得、セット
    colCode = Integer.toHexString(col.getGreen());
    sb.append(colCode.length() == 1? “0” + colCode: colCode);

    // 16進数で青成分を取得、セット
    colCode = Integer.toHexString(col.getBlue());
    sb.append(colCode.length() == 1? “0” + colCode: colCode);

    return sb.toString();
  }