2012-03-13 3 views
2

私は、ユーザーがプログラム、特にJTextAreaにテキストをペーストするときにイベントを発生させる必要があります。ペーストコマンドを検出するためのシステムに依存しない方法はありますか?私は周りを見回してきましたが、この目的のためにリスナーを見つけることはできません。私はシステムではない回避策をとることに決めましたが、これには普遍的な方法があることを期待していました。Java - システムセーフペーストコマンドをリッスンします

+0

「システムに依存しない」という意味を定義してください。 –

+0

'KeyEvent'は' VK_PASTE'定数を持っています(ここでは@HovercraftFullOfEelsで動作します) – Jon

答えて

2

なぜ「ペースト」を聞きますか? JTextAreaの「モデル」であるPlainDocumentにDocumentListenerを追加するだけではどうですか?これにより、のすべての情報がソースに関係なく変更されることが通知されます。聞きながらドキュメントの変更を防止したい場合は、DocumentFilterを使用します。それにかかわらず、これがSwing GUIであれば、おそらくKeyListenersを使用しないでください。

+0

これは私がとにかく探していたものです。すべての入力、ペースト、ドラッグで完璧に動作します。ありがとう! – UnstoppableDave

1

KeyEventKeyListener#keyPressed(KeyEvent e)の内部で使用することができますVK_PASTEという定数値を持っています

public void keyPressed(KeyEvent e) { 
    switch(e.getKeyCode()) { 
    case KeyEvent.VK_PASTE: 
     // do stuff when a paste occurs 
    } 
} 

役に立つかもしれませんVK_CUTVK_COPYもあります。これらのすべては、システムに依存しないものでなければなりません。

+0

キーストロークを使わずにテキストを貼り付けることができるので、すべてのイベントをキャプチャすることはできません。私はまだ彼の質問にOPがどこに行くのか分からず、彼はそれを明確にすることを拒否しているように見えることはありません。 –

+0

@HovercraftFullOfEels明らかに、 'VK_PASTE'はマウスのオプションも認識します。 – Jon

+0

ありがとうございます、それは動作するはずですが、起動していません。私は聞いた人に遅れて1つの入力を更新することに問題がありましたが、単純なprintlnを使っても起動しません。 – UnstoppableDave

関連する問題