2012-01-27 11 views
2

私は、Javaを使用してmipsアセンブリでコーディングするためのプログラムのようなテキストエディタを作成しようとしています。私はalittleを混ぜ合わせてしまいました。私はeclipseのもののようなControl-Spaceの機能を提供しようとしていました。ユーザーはadd $s1と入力し、ctrl + Spaceキーを押します。この文字列は"add $s1 , $s2 , $s3"と置き換えられます。 (それは私が即時タイプの命令のものとすることができる追加知っている...例です:D)、私のようなSTH、実際に私のJTextPaneの中で何が起こるかのキーストロークをバインドするハッシュマップを使用しています:うまくjavaで書かれたテキストエディタの自動補完を実装する方法は?

InputMap inputMap = textPane.getInputMap(); 
KeyStroke key = KeyStroke.getKeyStroke('some keys') ; 
inputMap.put(key, 'some action') ; 

問題は、私は私のプログラムのためにはCtrl +スペースを実装したい場合、私はこれを使用しています、次のとおりです。

key = KeyStroke.getKeyStroke(Event.CTRL_MASK , KeyEvent.VK_SPACE) ; 
inputMap.put(key, DefaultEditorKit.insertContentAction); 

が、私は選択することができ、どのような文字列ではなく、すでにパターンの一部を入力で挿入されなければなりませんか?言い換えれば、insertContentActionはどこから文字列を持ってくるのですか?どのようにStringを置き換えるべきかを定義するには? Ctrl + Spaceを押したときに、置き換えるための他の方法もありますか? (何イムを求めJTextPaneのに文字列のパターンを挿入する方法ではなく、パターンマッチングを実装するためのアルゴリズムである)事前に
感謝:)

+0

あなたは 'insertContentAction'を使うはずがないと思います。このショートカットをドキュメントに挿入する独自の['Action'](http://docs.oracle.com/javase/7/docs/api/javax/swing/Action.html)サブクラスにリンクする必要があります。 – millimoose

+0

@Inerdial yea私はそれを行う方法だと思いますが、ショートカットにアクションをリンクする例がありますか? –

+0

Swingチュートリアルには、キーバインディングに関するセクションがあります。http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html – millimoose

答えて

1

あなたは緊密にするために、テキスト・ペインのDocumentgetすることができますこれらのような制御された変化。 Documentには、あなたが聞くことができるいくつかの役に立つイベントがあります。

関連する問題