10

minimumからまでmaximumのステップで変化する Jspinner があります0.1。これは完全に正常に機能しています。ここで、ユーザーがテキストボックスを編集できるようにエディターを設定し、これからJSpinner数値NumberEditorのみが必要です。これも機能しています。つまり、ユーザーが入力したものは何でも、エディターは、を使用して値を取得すると、エディター内の数字のみを提供しますmySpinner.getValue().toString();。今、問題を解決します。テキストボックスに数値のみを受け入れさせたい と.(decimal point)、つまり、ユーザーが と 以外の何かを入力しようとした場合0-9.テキストボックスにエコーしないでください。

JSpinner mySpinner = new JSpinner();
mySpinner.setModel(new SpinnerNumberModel(default,minimum,maximum,0.1));
mySpinner.setEditor(new JSpinner.NumberEditor(mySpinner,"##.#"));

誰かがこれで私を助けることができますか?ありがとう :)

4

1 に答える 1

27

setAllowsInvalid(false)次のように試すことができます。

JFormattedTextField txt = ((JSpinner.NumberEditor) mySpinner.getEditor()).getTextField();
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false);

このプロパティを設定すると、Jspinnerはフィールドに有効な値のみを表示し、ユーザーが入力した他のすべての値を無視します。また、ユーザーはJspinnerに入力された値全体を削除することはできません。つまり、ユーザーが値全体を選択して削除しようとした場合、それは許可されません。ユーザーは有効な値でのみフィールドを編集できます。そうでない場合、編集できないように見えます。

于 2011-06-23T04:50:45.740 に答える