些細なことではありません-デコレータは、削除の代わりに選択を実装するのに大いに役立ちます;-)
まず、必要な動作を定義する必要があります。次に、意図したとおりに動作するアクションを実装し、エディターのActionMapに配置します。
Action myBackspace = ...
ActionMap map = ((JComponent) decorateCombo.getEditor().getEditorComponent())
.getActionMap();
map.put("nonstrict-backspace", myBackspace);
これはあいまいです。何が必要か正確にわからないため、オートコンプリートのソースを調べて、myBackspaceの実装方法を理解するのが最善です。
編集
あいまいさについて少し詳しく説明します。私の最初の考えは、次のようにデフォルトのバックスペースバインディングを再インストールすることでした。
InputMap map = ((JComponent) decorateCombo.getEditor().getEditorComponent())
.getInputMap();
map.put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_BACK_SPACE, 0),
DefaultEditorKit.deletePrevCharAction);
これはおそらく予想されたものではありません。キャレットが編集可能なコンボに含まれる要素の中央にあると仮定すると、カレットから最後までのテキストが選択され、その結果、deletePrevはprev文字ではなく選択された文字を削除します。これにより、カスタムアクションを実装する方法が導かれる可能性があります。最初に選択をクリアし、次にdeletePrevを実行してから、新しい単語がリストにあるかどうかを確認して、再選択します(またはしない)。要件を知らずに言うのは難しい。