JavaTM 2 Platform
Standard Ed. 6

javax.swing.tree
類別 DefaultTreeSelectionModel

java.lang.Object
  繼承者 javax.swing.tree.DefaultTreeSelectionModel
所有已實作的介面:
Serializable, Cloneable, TreeSelectionModel
直接已知子類別:
JTree.EmptySelectionModel

public class DefaultTreeSelectionModel
extends Object
implements Cloneable, Serializable, TreeSelectionModel

TreeSelectionModel 的預設實作。每當 selection 中的路徑(不是行)發生更改時,偵聽器就會獲得通知。為了能夠追蹤行的更改,您可能希望獲得一個偵聽器,用於階層樹上的擴展事件,並從該位置測試更改。

從所有更新選擇路徑的方法中調用 resetRowSelection。如果對這些方法中的任何方法創建子類別來過濾允許選擇的內容,並且沒有通知父級類別,請確定並通知 resetRowSelection

警告:此類別的序列化物件將與以後的 Swing 版本不相容。當前的序列化支持適用於短期存儲或運行相同 Swing 版本的應用程序之間的 RMI。從 1.4 版本開始,已在 java.beans 套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder

另請參見:
JTree

欄位摘要
protected  SwingPropertyChangeSupport changeSupport
          用於接收通知的註冊偵聽器。
protected  int leadIndex
          selection 中前導路徑的索引。
protected  TreePath leadPath
          添加的最後一條路徑。
protected  int leadRow
          前導行。
protected  EventListenerList listenerList
          事件偵聽器列表。
protected  DefaultListSelectionModel listSelectionModel
          維護列表選擇模型的句柄。
protected  RowMapper rowMapper
          提供給定路徑的行。
protected  TreePath[] selection
          當前選擇的路徑。
static String SELECTION_MODE_PROPERTY
          selectionMode 的屬性名稱。
protected  int selectionMode
          用於 selection 的網要,將是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION。
 
從介面 javax.swing.tree.TreeSelectionModel 繼承的欄位
CONTIGUOUS_TREE_SELECTION, DISCONTIGUOUS_TREE_SELECTION, SINGLE_TREE_SELECTION
 
建構子摘要
DefaultTreeSelectionModel()
          使用 DISCONTIGUOUS_TREE_SELECTION 的選擇網要創建空的 DefaultTreeSelectionModel 新實例。
 
方法摘要
 void addPropertyChangeListener(PropertyChangeListener listener)
          將 PropertyChangeListener 添加到偵聽器列表。
 void addSelectionPath(TreePath path)
          將路徑添加到當前的 selection 中。
 void addSelectionPaths(TreePath[] paths)
          向當前的 selection 中添加路徑。
 void addTreeSelectionListener(TreeSelectionListener x)
          向每次已選的 TreePaths 集合發生更改時都會得到通知的偵聽器列表添加 x。
protected  boolean arePathsContiguous(TreePath[] paths)
          如果路徑是連續的,或者此物件沒有 RowMapper,則返回 true。
protected  boolean canPathsBeAdded(TreePath[] paths)
          用於測試是否可以添加特定的 TreePath 集合。
protected  boolean canPathsBeRemoved(TreePath[] paths)
          如果可以移除該路徑而不中斷該模型的連續性,則返回 true。
 void clearSelection()
          清空當前的 selection。
 Object clone()
          返回具有相同 selection 的此物件的副本。
protected  void fireValueChanged(TreeSelectionEvent e)
          通知已註冊此物件上的階層樹選擇事件的所有偵聽器。
 TreePath getLeadSelectionPath()
          返回添加的最後一條路徑。
 int getLeadSelectionRow()
          返回 lead selection 索引。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          返回當前已在此模型上註冊為 FooListener 的所有物件組成的陣列。
 int getMaxSelectionRow()
          返回從 RowMapper 獲取的已選擇的 TreePath 的當前集合中的最大值。
 int getMinSelectionRow()
          返回從 RowMapper 獲取的已選擇的 TreePath 的當前集合中的最小值。
 PropertyChangeListener[] getPropertyChangeListeners()
          返回此 DefaultTreeSelectionModel 上註冊的所有屬性更改偵聽器組成的陣列。
 RowMapper getRowMapper()
          返回能夠將 TreePath 映射到行的 RowMapper 實例。
 int getSelectionCount()
          返回選擇的路徑數。
 int getSelectionMode()
          返回選擇網要,它是 SINGLE_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTIONCONTIGUOUS_TREE_SELECTION 之一。
 TreePath getSelectionPath()
          返回 selection 中的第一個路徑。
 TreePath[] getSelectionPaths()
          返回 selection 中的路徑。
 int[] getSelectionRows()
          返回當前已選的所有行。
 TreeSelectionListener[] getTreeSelectionListeners()
          返回已在此模型上註冊的所有階層樹選擇偵聽器組成的陣列。
protected  void insureRowContinuity()
          確保當前選擇的 TreePath 對於當前選擇網要是有效的。
protected  void insureUniqueness()
          此方法已過時,並且其實作現在是一個 noop。
 boolean isPathSelected(TreePath path)
          如果當前選擇了路徑 path,則返回 true。
 boolean isRowSelected(int row)
          如果選擇了由 row 標識的行,則返回 true。
 boolean isSelectionEmpty()
          如果 selection 當前為空,則返回 true。
protected  void notifyPathChange(Vector<javax.swing.tree.PathPlaceHolder> changedPaths, TreePath oldLeadSelection)
          通知偵聽器路徑中的更改。
 void removePropertyChangeListener(PropertyChangeListener listener)
          從偵聽器列表移除 PropertyChangeListener。
 void removeSelectionPath(TreePath path)
          從 selection 中移除路徑。
 void removeSelectionPaths(TreePath[] paths)
          從 selection 中移除路徑。
 void removeTreeSelectionListener(TreeSelectionListener x)
          從每次已選的 TreePaths 集合發生更改時都會得到通知的偵聽器列表中移除 x。
 void resetRowSelection()
          更新此物件從 TreePath 到行的映射關係。
 void setRowMapper(RowMapper newMapper)
          設置 RowMapper 實例。
 void setSelectionMode(int mode)
          設置選擇網要,它必須是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。
 void setSelectionPath(TreePath path)
          為該選擇設置路徑。
 void setSelectionPaths(TreePath[] pPaths)
          為該選擇設置路徑中的路徑。
 String toString()
          返回顯示並標識此物件屬性的字元串。
protected  void updateLeadIndex()
          更新 leadIndex 實例變數。
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

SELECTION_MODE_PROPERTY

public static final String SELECTION_MODE_PROPERTY
selectionMode 的屬性名稱。

另請參見:
常數欄位值

changeSupport

protected SwingPropertyChangeSupport changeSupport
用於接收通知的註冊偵聽器。


selection

protected TreePath[] selection
當前選擇的路徑。如果當前沒有選擇任何內容,則路徑為 null。


listenerList

protected EventListenerList listenerList
事件偵聽器列表。


rowMapper

protected transient RowMapper rowMapper
提供給定路徑的行。


listSelectionModel

protected DefaultListSelectionModel listSelectionModel
維護列表選擇模型的句柄。RowMapper 用於從 TreePath 映射到行,並將該值放置在此處。


selectionMode

protected int selectionMode
用於 selection 的網要,將是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION。


leadPath

protected TreePath leadPath
添加的最後一條路徑。


leadIndex

protected int leadIndex
selection 中前導路徑的索引。


leadRow

protected int leadRow
前導行。

建構子詳細資訊

DefaultTreeSelectionModel

public DefaultTreeSelectionModel()
使用 DISCONTIGUOUS_TREE_SELECTION 的選擇網要創建空的 DefaultTreeSelectionModel 新實例。

方法詳細資訊

setRowMapper

public void setRowMapper(RowMapper newMapper)
設置 RowMapper 實例。此實例用於確定特定 TreePath 的行。

指定者:
介面 TreeSelectionModel 中的 setRowMapper

getRowMapper

public RowMapper getRowMapper()
返回能夠將 TreePath 映射到行的 RowMapper 實例。

指定者:
介面 TreeSelectionModel 中的 getRowMapper

setSelectionMode

public void setSelectionMode(int mode)
設置選擇網要,它必須是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。如果網要不是定義的值之一,則假定網要為 DISCONTIGUOUS_TREE_SELECTION

如果當前的 selection 對新網要無效,這可以更改該 selection。例如,如果將網要更改為 SINGLE_TREE_SELECTION 時選中三個 TreePath,則只有一個 TreePath 仍然被選中。由特定的實作來決定保留選定哪一個 TreePath。

將該網要設置為定義的型別以外的其他型別,將導致該網要變成 DISCONTIGUOUS_TREE_SELECTION

指定者:
介面 TreeSelectionModel 中的 setSelectionMode

getSelectionMode

public int getSelectionMode()
返回選擇網要,它是 SINGLE_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTIONCONTIGUOUS_TREE_SELECTION 之一。

指定者:
介面 TreeSelectionModel 中的 getSelectionMode

setSelectionPath

public void setSelectionPath(TreePath path)
為該選擇設置路徑。如果這表示一個更改,則通知 TreeSelectionListener。如果 path 為 null,則這與調用 clearSelection 具有相同的效果。

指定者:
介面 TreeSelectionModel 中的 setSelectionPath
參數:
path - 要選擇的新路徑

setSelectionPaths

public void setSelectionPaths(TreePath[] pPaths)
為該選擇設置路徑中的路徑。如果這表示一個更改,則通知 TreeSelectionListener。此物件將可能保持路徑;換句話說,不更改傳入陣列中的任何物件。

如果 paths 為 null,則這與調用 clearSelection 具有相同的效果。

將前導路徑設置為 pPaths 中的最後一個路徑。

如果選擇網要為 CONTIGUOUS_TREE_SELECTION,並且添加新路徑會使該選擇不連續,則將該選擇重新設置為 paths 中的第一個 TreePath。

指定者:
介面 TreeSelectionModel 中的 setSelectionPaths
參數:
pPaths - 新的選擇

addSelectionPath

public void addSelectionPath(TreePath path)
將路徑添加到當前的 selection 中。如果路徑當前不在 selection 中,則通知 TreeSelectionListener。如果 path 為 null,則通知無效。

指定者:
介面 TreeSelectionModel 中的 addSelectionPath
參數:
path - 添加到當前 selection 中的新路徑

addSelectionPaths

public void addSelectionPaths(TreePath[] paths)
向當前的 selection 中添加路徑。如果路徑中的任何路徑當前不在 selection 中,則通知 TreeSelectionListener。如果 paths 為 null,則此方法無效。

將前導路徑設置為 paths 中的最後元素。

如果選擇網要為 CONTIGUOUS_TREE_SELECTION,則添加新的路徑會使選擇不連續。那麼可導致兩種結果:如果 paths 中的 TreePaths 是連續的,則該選擇會變為這些 TreePaths,相反,如果 TreePaths 不是連續的,則該選擇會變為 paths 中的第一個 TreePath。

指定者:
介面 TreeSelectionModel 中的 addSelectionPaths
參數:
paths - 添加到當前 selection 的新路徑

removeSelectionPath

public void removeSelectionPath(TreePath path)
從 selection 中移除路徑。如果路徑在 selection 中,則通知 TreeSelectionListener。如果 path 為 null,則此方法無效。

指定者:
介面 TreeSelectionModel 中的 removeSelectionPath
參數:
path - 要從選擇中移除的路徑

removeSelectionPaths

public void removeSelectionPaths(TreePath[] paths)
從 selection 中移除路徑。如果路徑中的任何路徑在 selection 中,則通知 TreeSelectionListeners。如果 paths 為 null,則此方法無效。

指定者:
介面 TreeSelectionModel 中的 removeSelectionPaths
參數:
paths - 從 selection 中移除的路徑

getSelectionPath

public TreePath getSelectionPath()
返回 selection 中的第一個路徑。如果當前只選擇一項,則此方法非常有用。

指定者:
介面 TreeSelectionModel 中的 getSelectionPath

getSelectionPaths

public TreePath[] getSelectionPaths()
返回 selection 中的路徑。如果當前沒有選擇任何內容,則返回 null(或一個空陣列)。

指定者:
介面 TreeSelectionModel 中的 getSelectionPaths

getSelectionCount

public int getSelectionCount()
返回選擇的路徑數。

指定者:
介面 TreeSelectionModel 中的 getSelectionCount

isPathSelected

public boolean isPathSelected(TreePath path)
如果當前選擇了路徑 path,則返回 true。

指定者:
介面 TreeSelectionModel 中的 isPathSelected

isSelectionEmpty

public boolean isSelectionEmpty()
如果 selection 當前為空,則返回 true。

指定者:
介面 TreeSelectionModel 中的 isSelectionEmpty

clearSelection

public void clearSelection()
清空當前的 selection。如果這表示當前 selection 中的更改,則通知選擇偵聽器。

指定者:
介面 TreeSelectionModel 中的 clearSelection

addTreeSelectionListener

public void addTreeSelectionListener(TreeSelectionListener x)
向每次已選的 TreePaths 集合發生更改時都會得到通知的偵聽器列表添加 x。

指定者:
介面 TreeSelectionModel 中的 addTreeSelectionListener
參數:
x - 要添加的新偵聽器

removeTreeSelectionListener

public void removeTreeSelectionListener(TreeSelectionListener x)
從每次已選的 TreePaths 集合發生更改時都會得到通知的偵聽器列表中移除 x。

指定者:
介面 TreeSelectionModel 中的 removeTreeSelectionListener
參數:
x - 要移除的偵聽器

getTreeSelectionListeners

public TreeSelectionListener[] getTreeSelectionListeners()
返回已在此模型上註冊的所有階層樹選擇偵聽器組成的陣列。

返回:
此模型的所有 TreeSelectionListener,如果當前沒有已註冊的階層樹選擇偵聽器,則返回一個空陣列。
從以下版本開始:
1.4
另請參見:
addTreeSelectionListener(javax.swing.event.TreeSelectionListener), removeTreeSelectionListener(javax.swing.event.TreeSelectionListener)

fireValueChanged

protected void fireValueChanged(TreeSelectionEvent e)
通知已註冊此物件上的階層樹選擇事件的所有偵聽器。

另請參見:
addTreeSelectionListener(javax.swing.event.TreeSelectionListener), EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
返回當前已在此模型上註冊為 FooListener 的所有物件組成的陣列。FooListener 是用 addFooListener 方法註冊的。

可以使用 class 文字值來指定 listenerType 參數,如 FooListener.class。例如,可以通過下面的程式碼查詢 DefaultTreeSelectionModel m 的階層樹選擇偵聽器:

TreeSelectionListener[] tsls = (TreeSelectionListener[])(m.getListeners(TreeSelectionListener.class));
如果不存在這樣的偵聽器,則此方法將返回一個空陣列。

參數:
listenerType - 所請求偵聽器的型別;該參數應該指定一個從 java.util.EventListener 繼承的介面
返回:
在此容器上註冊為 FooListener 的所有物件的陣列,如果沒有添加這樣的偵聽器,則返回一個空陣列
拋出:
ClassCastException - 如果 listenerType 沒有指定實作 java.util.EventListener 的類別或介面
從以下版本開始:
1.3
另請參見:
getTreeSelectionListeners(), getPropertyChangeListeners()

getSelectionRows

public int[] getSelectionRows()
返回當前已選的所有行。如果沒有已選的 TreePath 或沒有設置 RowMapper,此方法將返回 null(或一個空陣列)。如果某些行不可見(即:對於與 TreePath 對應的行,RowMapper 返回 -1),則可能返回長度小於選擇的 TreePath 長度的陣列。

指定者:
介面 TreeSelectionModel 中的 getSelectionRows

getMinSelectionRow

public int getMinSelectionRow()
返回從 RowMapper 獲取的已選擇的 TreePath 的當前集合中的最小值。如果沒有選定任何內容,或不存在 RowMapper,則返回 -1。

指定者:
介面 TreeSelectionModel 中的 getMinSelectionRow

getMaxSelectionRow

public int getMaxSelectionRow()
返回從 RowMapper 獲取的已選擇的 TreePath 的當前集合中的最大值。如果沒有選定任何內容,或不存在 RowMapper,則返回 -1。

指定者:
介面 TreeSelectionModel 中的 getMaxSelectionRow

isRowSelected

public boolean isRowSelected(int row)
如果選擇了由 row 標識的行,則返回 true。

指定者:
介面 TreeSelectionModel 中的 isRowSelected

resetRowSelection

public void resetRowSelection()
更新此物件從 TreePath 到行的映射關係。當從 TreePaths 到整數的映射關係更改時(例如,擴展了節點),應調用此方法。

通常不必調用此方法,JTree 及其相關的偵聽器將為您調用它。如果您正在實作自已的 View 類別,則必須調用該方法。

這將調用 insureRowContinuity,以確保當前選擇的 TreePath 基於選擇網要仍然有效。

指定者:
介面 TreeSelectionModel 中的 resetRowSelection

getLeadSelectionRow

public int getLeadSelectionRow()
返回 lead selection 索引。它是添加的最後一個索引。

指定者:
介面 TreeSelectionModel 中的 getLeadSelectionRow

getLeadSelectionPath

public TreePath getLeadSelectionPath()
返回添加的最後一條路徑。這可能與 JTree 維護的 leadSelectionPath 屬性不同。

指定者:
介面 TreeSelectionModel 中的 getLeadSelectionPath

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
將 PropertyChangeListener 添加到偵聽器列表。該偵聽器是為所有屬性註冊的。

當選擇網要更改時,將觸發 PropertyChangeEvent。

指定者:
介面 TreeSelectionModel 中的 addPropertyChangeListener
參數:
listener - 要添加的 PropertyChangeListener

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
從偵聽器列表移除 PropertyChangeListener。此方法移除一個為所有屬性註冊的 PropertyChangeListener。

指定者:
介面 TreeSelectionModel 中的 removePropertyChangeListener
參數:
listener - 要移除的 PropertyChangeListener

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
返回此 DefaultTreeSelectionModel 上註冊的所有屬性更改偵聽器組成的陣列。

返回:
此模型的所有 PropertyChangeListener,如果當前沒有註冊的屬性更改偵聽器,則返回一個空陣列
從以下版本開始:
1.4
另請參見:
addPropertyChangeListener(java.beans.PropertyChangeListener), removePropertyChangeListener(java.beans.PropertyChangeListener)

insureRowContinuity

protected void insureRowContinuity()
確保當前選擇的 TreePath 對於當前選擇網要是有效的。如果選擇網要為 CONTIGUOUS_TREE_SELECTION,並且 RowMapper 存在,則此方法將確保所有的行是連續的,即:排序時,所有的行都是有順序的,並且沒有間隙。如果選擇不是連續的,則重設該選擇,以包含在排序時連續行的第一個設置。

如果選擇網要為 SINGLE_TREE_SELECTION,並且選擇了多個 TreePath,則重設該選擇,以包含當前選擇的第一個路徑。


arePathsContiguous

protected boolean arePathsContiguous(TreePath[] paths)
如果路徑是連續的,或者此物件沒有 RowMapper,則返回 true。


canPathsBeAdded

protected boolean canPathsBeAdded(TreePath[] paths)
用於測試是否可以添加特定的 TreePath 集合。如果 paths 為 null(或空),或此物件沒有 RowMapper,或當前沒有選擇任何內容,或選擇網要為 DISCONTIGUOUS_TREE_SELECTION,或將該路徑添加到當前的 selection 仍得到 TreePath 的連續集,則此方法返回 true。


canPathsBeRemoved

protected boolean canPathsBeRemoved(TreePath[] paths)
如果可以移除該路徑而不中斷該模型的連續性,則返回 true。這樣開銷相當大。


notifyPathChange

protected void notifyPathChange(Vector<javax.swing.tree.PathPlaceHolder> changedPaths,
                                TreePath oldLeadSelection)
通知偵聽器路徑中的更改。changePaths 應包含 PathPlaceHolder 的實例。


updateLeadIndex

protected void updateLeadIndex()
更新 leadIndex 實例變數。


insureUniqueness

protected void insureUniqueness()
此方法已過時,並且其實作現在是一個 noop。它仍由 setSelectionPaths 和 addSelectionPaths 調用,但只是用於向後相容。


toString

public String toString()
返回顯示並標識此物件屬性的字元串。

覆寫:
類別 Object 中的 toString
返回:
此物件的字元串表示形式

clone

public Object clone()
             throws CloneNotSupportedException
返回具有相同 selection 的此物件的副本。此方法不複製選擇偵聽器和屬性偵聽器。

覆寫:
類別 Object 中的 clone
返回:
此實例的一個副本。
拋出:
CloneNotSupportedException - 此類別的實例從不拋出
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only