2011-07-21 47 views
1

我已經有一個組件上有幾個JTables。我已經在表上安裝了自定義TransferHandler。現在,我想一個辦法來調用這些表上的剪切/複製/粘貼命令,通過:結合JMenu剪貼板功能,加速器和actionMenu支持(最佳實踐)

  1. 的菜單欄,這對目前主要集中JTable中
  2. 彈出菜單中的JTable中
  3. 鍵盤快捷方式工作,它適用於當前關注的JTable

JTable的actionMap已經包含「剪切」,「複製」,「粘貼」條目。這些鍵的操作執行正確的操作,調用TransferHandler。

我已經試過如下:

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

這當我按下CMD-X,而不是當我從菜單中選擇「剪切」的作品。我認爲這是因爲菜單消耗了事件,並且它永遠不會到達JTable。

我可以想到一些hacky的方法來實現這一點,但有沒有一個乾淨的方式去實現它?我怎樣才能讓我的菜單項目發送他們的actionCommand到當前集中的組件?

回答

1

目前還不清楚如何初始化菜單項。由於JTable而不是其中一個文本組件,您可能想要查看CCP in a non-Text Component關於設置Edit菜單。

+0

對於那篇CCP文章(聽衆泄漏內存,一方面,鍵盤快捷鍵不是跨平臺的)並不着迷,但它似乎是做我想做的最好的方式。謝謝! –