2011-12-04 15 views
2

私はレターバンクの文字を使って単語を作成するゲームを持っています。手紙が入力されるたびに、手紙アイコンが消えて消えてしまいます。私はすでにほとんどの機能を持っていますが、修正できないバグがいくつかあります。現在、私はKeyListenerを使用しており、キーイベントに基づいて入力/取出しアクションをフィルタリングしています。しかし、同時に複数のキーが押された場合に問題が発生します。JTextFieldのユーザコントロールを制限する

入力フィルタリングは私の主な問題ではなく、消去時に文字を銀行に戻しています。キャレットを完全に削除し、ユーザーがJTextFieldの最後から/ backspaceに入力を追加できるようにする方法はありますか?また、ボタンのマッシングを正しく処理するためのヒントは、非常に高く評価されます。ありがとう!

注:スーパー・テキスト・トゥイストをプレイしたことがあるのなら、それは基本的に私が行っている推測方法のタイプです。

+1

を示唆したようDocumentFilterを使用し、あなたが今、それをやっている方法に添付されていますか?リスナーをJTextFieldに配置し、それが変更されるたびに、そこにあるすべてのテキストを利用可能な文字と照合することをお勧めします。プログラムは多くの作業を行いますが、それでも問題は解決できません。これにより、ユーザーは文字列に含まれていない文字を入力するのを止めることはできません。 –

+1

setEditable(false)でJTextFieldを編集できないようにし、KeyListener(またはキーバインディング)を使用して文字を追加または削除します。 –

+0

@ dann.devは、たとえプログラムが追いついても非常に非効率的だと思われます。入力が変わるたびに複数の文字を再チェックするよりも、キーごとのレベルをチェックする方がよいでしょう。 – Max

答えて

2

PlainDocumentJTextFieldで使用)を拡張し、insertString()およびremove()メソッドをオーバーライドできます。あなたは挿入されたものと削除されたものを確認し、あなたのインターフェースを適合させることができます。

または(より良いかもしれない)Hovercraft Full Of Eels