TITLE:JPasswordFieldのエコー文字を変更

Posted by at 2006-12-11

JPasswordFieldのエコー文字を変更

JPasswordFieldのエコー文字を独自の図形に変更します。

  • &jnlp;
  • &jar;
  • &zip;
PasswordView.png

サンプルコード

class MyPasswordFieldUI extends BasicPasswordFieldUI {
  public View create(Element elem) {
    return new MyPasswordView(elem);
  }
  class MyPasswordView extends PasswordView{
    public MyPasswordView(Element element) {
      super(element);
    }
    protected int drawEchoCharacter(Graphics g, int x, int y, char c) {
      Graphics2D g2d = (Graphics2D) g;
      FontMetrics fm = g2d.getFontMetrics();
      icon.paintIcon(null, g, x, y-fm.getAscent());
      return x + icon.getIconWidth();

      //g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
      //                                    RenderingHints.VALUE_ANTIALIAS_ON);
      //FontMetrics fm = g2d.getFontMetrics();
      //int r = fm.charWidth(c)-4;
      ////g2d.setPaint(Color.GRAY);
      //g2d.drawRect(x+2, y+4-fm.getAscent(), r, r);
      ////g2d.setPaint(Color.GRAY.brighter());
      //g2d.fillOval(x+2, y+4-fm.getAscent(), r, r);
      //return x + fm.charWidth(c);
    }
  }
}
View in GitHub: Java, Kotlin

解説

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

コメント