簡體   English   中英

使用JTree進行Swing操作

[英]Swing Action with JTree

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

由於TreeSelectionModel不支持Actions,我想知道將此歸檔的最佳實踐是什么。

到目前為止,我想出了實現一個通用方法的想法,該方法是從actionPerformed(ActionEvent)調用的,也是從addTreeSelectionListener(TreeSelectListener)調用的。

誰有更好的主意?

這似乎可能會增加TreeModel與其視圖組件JTree之間的耦合。 由於Action實例通常用於鍵綁定 ,因此查看為常見的Look&Feel實現定義的現有操作可能會有所幫助,如@ camickr的文章Key Bindings所示 可以從TreeSelectionListener引發這些操作,如此示例中所示,該示例利用了滾動窗格操作。

附錄:作為參考, 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM