2011-07-21 19 views
1

私はいくつかのJTableを持つコンポーネントを持っています。テーブルにカスタムのTransferHandlerをインストールしました。現在 JMenuクリップボード関数、アクセラレータ、およびactionMenuのサポートの組み合わせ(ベストプラクティス)

  • キーボードショートカット
  • ポップアップメニューJTables上のJTableを集中に取り組んでいます

    1. メニューバー、:さて、私は手段を経由して、これらのテーブル上のカット/コピー/ペーストコマンドを起動したいです現在フォーカスされているJTableで動作する

    JTableのactionMapには、すでに "cut"、 "copy"、 "paste"のエントリがあります。これらのキーのアクションは正しいことを行い、TransferHandlerを呼び出します。

    私は次のことを試してみた:私は、メニューから「カット」を選択したときに

    dataTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(cutMenuItem.getAccelerator(), "cut"); 
    

    これは私がCMD-Xを押したときに動作しますが、ありません。これは、メニューがイベントを消費し、決してJTableに到達しないためです。

    私はこれを実装するいくつかのハックの方法を考えることができますが、それについて行くきれいな方法はありますか?メニュー項目を取得して、現在フォーカスのあるコンポーネントにactionCommandを送信するにはどうすればよいですか?

  • 答えて

    1

    メニュー項目をどのように初期化するかは不明です。 JTableではありません。のテキストコンポーネントの1つで、Editメニューの設定についてはCCP in a non-Text Componentを参照してください。

    +0

    CCPの記事(リスナはメモリが漏れていますが、キーボードショートカットはクロスプラットフォームではありません)には夢中ではありませんが、私が望むことを行うには最良の方法です。ありがとう! –

    関連する問題