public class TreeSearchable extends Searchable implements javax.swing.event.TreeModelListener, java.beans.PropertyChangeListener
TreeSearchable is an concrete implementation of Searchable that enables the search function in
JTree. It's very simple to use it. Assuming you have a JTree, all you need to do is to call
Now the JTree will have the search function.
JTree tree = ....;
TreeSearchable searchable = new TreeSearchable(tree);
JTree tree = ....;
TreeSearchable searchable = new TreeSearchable(tree) {
protected String convertElementToString(Object object) {
...
}
};
Additional customization can be done on the base Searchable class such as background and foreground color,
keystrokes, case sensitivity. JTree actually has a simple searchable feature but has flaws. It will affect our
searchable feature. To workaround it, you can override getNextMatch method and always return -1 when you create your
JList.
JTree tree = new JTree(...) {
public TreePath getNextMatch(String prefix, int startingRow, Position.Bias bias) {
return null;
}
};
Searchable.DefaultSearchPopup, Searchable.SearchField, Searchable.SearchPopup_component, _componentListener, _focusListener, _keyListener, _matchCount, CLIENT_PROPERTY_SEARCHABLE, listenerList, PROPERTY_SEARCH_TEXT| Constructor and Description |
|---|
TreeSearchable(javax.swing.JTree tree) |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
convertElementToString(java.lang.Object object)
Converts the element in JTree to string.
|
protected java.lang.Object |
getElementAt(int index)
Gets the element at the specified index.
|
protected int |
getElementCount()
Gets the total element count in the component.
|
protected int |
getSelectedIndex()
Gets the selected index in the component.
|
protected java.util.List<javax.swing.tree.TreePath> |
getTreePathes()
Gets the cached tree paths list.
|
boolean |
isRecursive()
Checks if the searchable is recursive.
|
protected void |
populateTreePaths()
Recursively go through the tree to populate the tree paths into a list and cache them.
|
void |
propertyChange(java.beans.PropertyChangeEvent evt) |
protected void |
resetTreePathes()
Reset the cached tree paths list.
|
void |
setRecursive(boolean recursive)
Sets the recursive attribute.
|
protected void |
setSelectedIndex(int index,
boolean incremental)
Sets the selected index.
|
void |
treeNodesChanged(javax.swing.event.TreeModelEvent e) |
void |
treeNodesInserted(javax.swing.event.TreeModelEvent e) |
void |
treeNodesRemoved(javax.swing.event.TreeModelEvent e) |
void |
treeStructureChanged(javax.swing.event.TreeModelEvent e) |
void |
uninstallListeners()
Uninstall the listeners that installed before.
|
addPropertyChangeListener, addSearchableListener, adjustSelectedIndex, cancelHighlightAll, compare, compare, convertToString, createComponentListener, createFocusListener, createKeyListener, createSearchPopup, findAll, findFirst, findFirstExactly, findFromCursor, findLast, findNext, findPrevious, firePropertyChangeEvent, fireSearchableEvent, getBackground, getComponent, getCurrentIndex, getCursor, getElementAtAsString, getForeground, getMismatchForeground, getPopupLocation, getPopupLocationRelativeTo, getPopupTimeout, getResourceString, getSearchable, getSearchableListeners, getSearchableProvider, getSearchingDelay, getSearchingText, getSearchLabel, getWildcardSupport, hidePopup, highlightAll, installListeners, isActivateKey, isCaseSensitive, isCountMatch, isDeactivateKey, isFindFirstKey, isFindLastKey, isFindNextKey, isFindPreviousKey, isFromStart, isHeavyweightComponentEnabled, isHideSearchPopupOnEvent, isIncrementalSelectKey, isNavigationKey, isPopupVisible, isProcessModelChangeEvent, isRepeats, isReverseOrder, isSearchableListenerInstalled, isSelectAllKey, isWildcardEnabled, keyTypedOrPressed, removePropertyChangeListener, removeSearchableListener, reverseFindFromCursor, searchingTextEmpty, select, setBackground, setCaseSensitive, setCountMatch, setCursor, setCursor, setForeground, setFromStart, setHeavyweightComponentEnabled, setHideSearchPopupOnEvent, setMismatchForeground, setPopupLocation, setPopupLocationRelativeTo, setPopupTimeout, setProcessModelChangeEvent, setRepeats, setReverseOrder, setSearchableProvider, setSearchingDelay, setSearchLabel, setWildcardEnabled, setWildcardSupport, showPopup, textChangedpublic boolean isRecursive()
public void setRecursive(boolean recursive)
recursive - the attributepublic void uninstallListeners()
SearchableuninstallListeners in class Searchableprotected void setSelectedIndex(int index,
boolean incremental)
SearchablesetSelectedIndex in class Searchableindex - the index to be selectedincremental - a flag to enable multiple selection. If the flag is true, the element at the index should be
added to current selection. If false, you should clear previous selection and then select the
element.protected int getSelectedIndex()
SearchableHere are some examples. In the case of JList, the index is the row index. In the case of JTree, the index is the row index too. In the case of JTable, depending on the selection mode, the index could be row index (in row selection mode), could be column index (in column selection mode) or could the cell index (in cell selection mode).
getSelectedIndex in class Searchableprotected java.lang.Object getElementAt(int index)
SearchablegetElementAt in class Searchableindex - the indexprotected int getElementCount()
SearchablegetElementCount in class Searchableprotected void populateTreePaths()
protected void resetTreePathes()
protected java.util.List<javax.swing.tree.TreePath> getTreePathes()
protected java.lang.String convertElementToString(java.lang.Object object)
toString() of the last path component in the TreePath.convertElementToString in class Searchableobject - the object to be convertedpublic void treeNodesChanged(javax.swing.event.TreeModelEvent e)
treeNodesChanged in interface javax.swing.event.TreeModelListenerpublic void treeNodesInserted(javax.swing.event.TreeModelEvent e)
treeNodesInserted in interface javax.swing.event.TreeModelListenerpublic void treeNodesRemoved(javax.swing.event.TreeModelEvent e)
treeNodesRemoved in interface javax.swing.event.TreeModelListenerpublic void treeStructureChanged(javax.swing.event.TreeModelEvent e)
treeStructureChanged in interface javax.swing.event.TreeModelListenerpublic void propertyChange(java.beans.PropertyChangeEvent evt)
propertyChange in interface java.beans.PropertyChangeListener