使用JTree进行Swing操作

时间:2014-03-31 08:19:58

标签: java swing action jtree

在开发Swing应用程序时,我使用的是Action而不是Listener。我有一个通常从AbstractButtons触发的操作,但现在我需要在选择JTree节点时触发它。

由于TreeSelectionModel不支持动作,我想知道将这个归档的最佳做法是什么。

到目前为止,我想出了一个实现广义方法的想法,该方法是从actionPerformed(ActionEvent)以及addTreeSelectionListener(TreeSelectListener)调用的。

任何有更好主意的人?

1 个答案:

答案 0 :(得分:2)

这似乎可能会增加TreeModel及其视图组件JTree之间的耦合。由于Action个实例经常在key bindings中使用,因此可能有助于审核为常见外观和广告定义的现有操作。感觉实现,如@ 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