---
title: JPasswordFieldのエコー文字を変更
tags: [JPasswordField, Icon]
author: aterai
pubdate: 2006-12-11T14:51:59+09:00
description: JPasswordFieldのエコー文字を独自のIcon図形に変更します。
---
* 概要 [#x1cc913a]
`JPasswordField`のエコー文字を独自の`Icon`図形に変更します。

#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTQ8cs8ApI/AAAAAAAAAgY/gxUUdKI65yA/s800/PasswordView.png)

* サンプルコード [#bd030635]
#code(link){{
class MyPasswordFieldUI extends BasicPasswordFieldUI {
  private static final StarIcon ICON = new StarIcon();
  public static MyPasswordFieldUI createUI(JPasswordField c) {
    c.setEchoChar('\u25A0'); //As wide as a CJK character cell (fullwidth)
    return new MyPasswordFieldUI();
  }
  @Override public View create(Element elem) {
    return new MyPasswordView(elem);
  }
  private static class MyPasswordView extends PasswordView {
    @Override protected int drawEchoCharacter(
        Graphics g, int x, int y, char c) {
      FontMetrics fm = g.getFontMetrics();
      ICON.paintIcon(null, g, x, y - fm.getAscent());
      return x + ICON.getIconWidth(); //fm.charWidth(c);
    }
    public MyPasswordView(Element element) {
      super(element);
    }
  }
}
}}

* 解説 [#vc509445]
上記のサンプルでは、下の`JPasswordField`のエコー文字を独自の図形に変更しています。またこの図形のサイズを上の`JPasswordField`のエコー文字と幅を合わせるために同じ文字を`setEchoChar`しています。

//* 参考リンク
* コメント [#n2314028]
#comment
#comment