コメント
サイト運営のための寄付
作成者: 白鷹2
ページ番号: 1228093883_1271914835
作成日: 2010-04-22
修正日: 2010-05-19
JTextField
JTextField関係
文字数を制限する
今のところ、簡単な方法はないようです。一例として、JTextFieldを継承したクラスを使います。
このコンポーネントのmaxLengthプロパティに文字数の最大数を設定すると制限されます。

PlainDocumentを継承するクラスを用意し、それを、setDocumentを使って設定しても良いと思います。
ただし、バインドを使っていると、この方法では制限できません。その場合、バインドのバリデータを利用します。

public class LimitSizeTextField extends JTextField {
  @Override
  protected Document createDefaultModel() {
    return new LimitDocument();
  }

  protected class LimitDocument extends PlainDocument{
    @Override
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
      if(str == null){
        return ;
      }
      // IMEの変換中の文字列は、そのままinsertする
      if((a != null) && (a.isDefined(StyleConstants.ComposedTextAttribute))){
        super.insertString(offs, str, a);
        return;
      }
      if(!canInsertString(str)){
        return ;
      }
      super.insertString(offs, str, a);
    }
  }

  private boolean canInsertString(String str){
    if(max == null){
      return true;
    }
    if(max < 0){
      return true;
    }
    if((super.getText().length() + str.length()) > max){
      return false;
    }
    return true;
  }

  public Integer getMaxLength() {
    return max;
  }

  public void setMaxLength(Integer max) {
    this.max = max;
  }

  protected Integer max = null;
}

IMEを無効にする
enableInputMethods(false)
©2008-2009 PostTips All Rights Reserved.
新規ページの作成
タイトル:
要約
新規画像の登録
タイトル:
画像ファイルの指定
タイトルの修正
画像タイトルの修正
要約の修正
コメントの書き込み
コメント: