4

\JTextField の作成は次のとおりです。

hourlyWageInput = new JTextField("7.25");
DocumentFilter filter = new UppercaseDocumentFilter();
((AbstractDocument) hourlyWageInput.getDocument()).setDocumentFilter(filter);
hourlyWageInput.setHorizontalAlignment(JTextField.CENTER);
add(hourlyWageInput);

ここに私の DocumentFilter があります:

import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class UppercaseDocumentFilter extends DocumentFilter {

 public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
      String text, javax.swing.text.AttributeSet attr)

      throws BadLocationException {
           fb.insertString(offset, text.replaceAll("\\D", ""), attr);   
 }
}

これにより、JTextField からすべての文字が自動的に削除されます。

しかし、「\D」に似たすべてのコマンドを含む場所を誰かが知っているかどうか疑問に思っていました. 正しい情報を見つけるのに時間がかかりました。

また、私が今持っているコードも. 私はダブルスを扱っているので、私が必要とするタイプではありません。何か案は?

ありがとう!今日私が学んだことは驚くべきことです。私は13時間連続でコーディングしています。

4

1 に答える 1

8

関数はreplaceAll正規表現を取ります。正規表現については、オンラインの多くのチュートリアル(@Hovercraft Full Of Eelsコメントを参照)またはJava APIから直接学ぶことができます:http: //docs.oracle.com/javase/6/docs/api/java/util/ regex / Pattern.html

基本的に、任意の正規表現構成(上記のリンクにリストされている)を組み合わせて、正規表現を形成できます。たとえば、0〜9と。だけを確認したい場合。許可されている場合は、次を使用できます。

text.replaceAll("[^0-9.]", "")
于 2012-08-07T03:43:59.083 に答える