5

sの値をクリアするのは難しいと思いますJFormattedTextField。どうやってするの?

私は試した

txtJFormattedTextField.setText("");

しかし、フォーカスが再び失われると、クリアした値が表示されます。この問題に関する API を読みました。

日付フィールドの JTFormattedTextFields を作成するための私の工場は以下のとおりです -

public static JFormattedTextField createDateField() {
        MaskFormatter maskFormatter = null;
        try {
            maskFormatter = new MaskFormatter("##/##/####");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        JFormattedTextField formattedTextField = new JFormattedTextField(
                maskFormatter);
        SwingHelper.installDateValidation((AbstractDocument) formattedTextField
                .getDocument());
        formattedTextField.setColumns(10);
        return formattedTextField;
    }

を試した

try {
    ((JFormattedTextField) txtSigninDate).commitEdit();
} catch (ParseException e) {
    e.printStackTrace();
}

結果は例外でした - 以下は例外トレースです。

java.text.ParseException: stringToValue passed invalid value
    at javax.swing.text.MaskFormatter.stringToValue(MaskFormatter.java:456)
    at javax.swing.text.MaskFormatter.stringToValue(MaskFormatter.java:371)
    at javax.swing.JFormattedTextField.commitEdit(JFormattedTextField.java:530)
    at app.view.action.Authentication_Action.clearSigninFields(Authentication_Action.java:207)
    at app.view.action.authentication.AuthenticationCommand.decorateSignout(AuthenticationCommand.java:285)
    at app.view.action.authentication.AuthenticationCommand.executeSignin(AuthenticationCommand.java:122)
    at app.view.action.Authentication_Action$2.actionPerformed(Authentication_Action.java:292)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
4

4 に答える 4

6

1.中古の依存Formatter

JFormattedTextField.setValue(0.00);

2.またはMaskFormatter

JFormattedTextField.setValue(null);

3. withのnull値を設定することは可能ですが、concreteには適切な値を使用することをお勧めします。JFormattedTextFieldFormatterFormatterNumberFormattersetValue(0.00)

4.より良いヘルプのためにSSCCEを投稿してください。そうしないと、おそらくあなたの質問は答えられません。

于 2012-08-06T09:45:38.260 に答える
1

表示されている動作の理由は、 aが最後に有効な値にJFormattedTextField戻るためです。通常、コードは、通常のではなく、のゲッターとセッターを使用してそのようなフィールドとやり取りする必要があります。focusLostcommitvaluetextJTextComponent

したがって、解決策は、フォーマッタによって空の文字列でフォーマットされた値を設定することです。

詳細については、チュートリアルを参照してください。

于 2012-08-06T10:05:22.967 に答える
-1

追加してみる

formattedTextField.commitEdit();

テキストを設定した後;

于 2012-08-06T09:23:54.463 に答える