2014-03-31 28 views
0

開發Swing應用程序時,我使用Action而不是Listener。我有一個動作,通常從AbstractButtons觸發,但現在我需要在選擇JTree節點時觸發它。使用JTree進行Swing動作

由於TreeSelectionModel不支持操作,我想知道什麼是最好的做法是將其歸檔。

到目前爲止,我只是想出了實現從actionPerformed(ActionEvent)以及從addTreeSelectionListener(TreeSelectListener)調用的廣義方法的想法。

誰有更好的主意?

+1

發佈[MCVE](http://stackoverflow.com/help/mcve)尋求幫助。 – alex2410

+0

@ alex2410這是一個相當普遍的問題,但沒有具體的實現。 – Hannes

回答

2

這似乎可能會增加您的TreeModel與其視圖組件JTree之間的耦合。由於Action實例經常在key bindings中使用,因此可能有助於查看針對常見Look &定義的現有操作感受實現,如@ camickr的文章Key Bindings中所示。這些操作可以從您的TreeSelectionListener引發,如此example中所示,它利用滾動窗格操作。

附錄:供參考,javax.swing.plaf.metal.MetalLookAndFeel定義了這些JTree動作和綁定。

 
Action      Focused            Ancestor 
------      ------            ------- 
addToSelection    SPACE 
cancel                   ESCAPE 
clearSelection    ctrl BACK_SLASH 
collapse      SUBTRACT 
copy       ctrl INSERT, ctrl C, COPY 
cut       CUT, shift DELETE, ctrl X 
expand      ADD 
extendTo      shift SPACE 
moveSelectionTo    shift ctrl SPACE 
moveSelectionToParent 
paste       shift INSERT, ctrl V, PASTE 
scrollDownChangeLead   ctrl PAGE_DOWN 
scrollDownChangeSelection  PAGE_DOWN 
scrollDownExtendSelection  shift ctrl PAGE_DOWN, shift PAGE_DOWN 
scrollLeft     ctrl LEFT, ctrl KP_LEFT 
scrollLeftChangeLead 
scrollLeftExtendSelection 
scrollRight     ctrl RIGHT, ctrl KP_RIGHT 
scrollRightChangeLead 
scrollRightExtendSelection 
scrollUpChangeLead   ctrl PAGE_UP 
scrollUpChangeSelection  PAGE_UP 
scrollUpExtendSelection  shift PAGE_UP, shift ctrl PAGE_UP 
selectAll      ctrl SLASH, ctrl A 
selectChild     RIGHT, KP_RIGHT 
selectChildChangeLead 
selectFirst     HOME 
selectFirstChangeLead   ctrl HOME 
selectFirstExtendSelection shift HOME, shift ctrl HOME 
selectLast     END 
selectLastChangeLead   ctrl END 
selectLastExtendSelection  shift END, shift ctrl END 
selectNext     DOWN, KP_DOWN 
selectNextChangeLead   ctrl DOWN, ctrl KP_DOWN 
selectNextExtendSelection  shift ctrl DOWN, shift DOWN, shift ctrl KP_DOWN, shift KP_DOWN 
selectParent     LEFT, KP_LEFT 
selectParentChangeLead 
selectPrevious    KP_UP, UP 
selectPreviousChangeLead  ctrl UP, ctrl KP_UP 
selectPreviousExtendSelection shift UP, shift KP_UP, shift ctrl UP, shift ctrl KP_UP 
startEditing     F2 
toggle 
toggleAndAnchor    ctrl SPACE