0

Mac OS Xの最新のJavaアップデートで導入されたバグが明らかにあり、JFormattedTextFieldsでの削除が2回実行されます。http://lists.apple.com/archives/java-dev/2010/May/msg00092.htmlを参照してください

DefaultEditorKit.deletePrevCharActionは、削除キーが押されたときに2回呼び出されます。

回避策の提案はありますか?

テキストフィールドの削除アクションを、これらの重複する呼び出しを何らかの方法で除外するパッチを適用したバージョンに置き換えることを考えています。

4

1 に答える 1

2

私の回避策、それは非常にうまく機能しているようです:

public class PatchedTextField extends JFormattedTextField {

    public PatchedTextField() {
        super();

        final Action originalDeleteAction =
            getActionMap().get(DefaultEditorKit.deletePrevCharAction);

        getActionMap().put(DefaultEditorKit.deletePrevCharAction,
            new AbstractAction() {
                ActionEvent previousEvent;

                public void actionPerformed(ActionEvent e) {
                // Filter out events that happen within 1 millisecond from each other
                if (previousEvent == null || e.getWhen() - previousEvent.getWhen() > 1) {
                    originalDeleteAction.actionPerformed(e);
                }
                previousEvent = e;
            }
        });
    }
}

私がこれまでに見つけた唯一の欠点は、1ミリ秒あたり複数の文字を削除できないことです。

于 2010-06-03T09:11:41.793 に答える