JavaTM 2 Platform
Standard Ed. 6

javax.swing.tree
介面 TreeSelectionModel

所有已知實作類別:
DefaultTreeSelectionModel, JTree.EmptySelectionModel

public interface TreeSelectionModel

此介面表示階層樹選擇元件的當前狀態。有關使用階層樹選擇模型的資訊和範例,請參閱 The Java Tutorial 中的 How to Use Trees 一節。

階層樹選擇的狀態由 TreePath 集合描述,也可以是整數集合。從 TreePath 到整數的映射通過 RowMapper 實例的方式完成。TreeSelectionModel 不一定具有 RowMapper 才可以正確地操作,但是,沒有 RowMapper 的情況下,getSelectionRows 將返回 null。

可以將 TreeSelectionModel 配置為只允許一條路徑 (SINGLE_TREE_SELECTION)、多條連續路徑 (CONTIGUOUS_TREE_SELECTION) 或多條不連續的路徑 (DISCONTIGUOUS_TREE_SELECTION)。RowMapper 用於確定 TreePath 是否為連續。沒有 RowMapper 時,CONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 的功能相同,即都允許在 TreeSelectionModel 中包含任何數量的路徑。

對於 CONTIGUOUS_TREE_SELECTION 選擇模型,路徑在任何時候更改時(通過 setSelectionPathaddSelectionPath ...),都將重新檢查 TreePath,以使它們保持連續。通過調用 resetRowSelection,也可以強制檢查 TreePath。如何將一組不連續的 TreePath 映射到連續集合要通過此實例的實作者強制執行特定的策略來完成。

實作應對添加到該選擇中的重複 TreePath 進行組合。例如,以下程式碼

   TreePath[] paths = new TreePath[] { treePath, treePath };
   treeSelectionModel.setSelectionPaths(paths);
 
會導致僅選擇一個路徑:treePath,而不是 treePath 的兩個副本。

前導 TreePath 是添加(或設置)的最後一個路徑。前導行則是對應於 TreePath 的行,由 RowMapper 確定。


欄位摘要
static int CONTIGUOUS_TREE_SELECTION
          選擇只能是連續的。
static int DISCONTIGUOUS_TREE_SELECTION
          選擇可以包含任何數量的項,這些項不必是連續的。
static int SINGLE_TREE_SELECTION
          一次只能選擇一個路徑。
 
方法摘要
 void addPropertyChangeListener(PropertyChangeListener listener)
          將一個 PropertyChangeListener 添加到偵聽器列表中。
 void addSelectionPath(TreePath path)
          將路徑添加到當前的選擇中。
 void addSelectionPaths(TreePath[] paths)
          向當前的選擇中添加路徑。
 void addTreeSelectionListener(TreeSelectionListener x)
          向偵聽器列表添加 x,每次選定的 TreePath 集合發生更改時,這些偵聽器都會得到通知。
 void clearSelection()
          清空當前的選擇。
 TreePath getLeadSelectionPath()
          返回添加的最後一個路徑。
 int getLeadSelectionRow()
          返回前導選擇索引。
 int getMaxSelectionRow()
          返回從 RowMapper 獲取的已選的 TreePath 當前集合中的最大值。
 int getMinSelectionRow()
          返回從 RowMapper 獲取的已選的 TreePath 當前集合中的最小值。
 RowMapper getRowMapper()
          返回能夠將 TreePath 映射到行的 RowMapper 實例。
 int getSelectionCount()
          返回選擇的路徑數。
 int getSelectionMode()
          返回當前選擇的網要(SINGLE_TREE_SELECTIONCONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 之一)。
 TreePath getSelectionPath()
          返回選擇中的第一個路徑。
 TreePath[] getSelectionPaths()
          返回選擇中的路徑。
 int[] getSelectionRows()
          返回所有當前已選的行。
 boolean isPathSelected(TreePath path)
          如果路徑 path 在當前的選擇中,則返回 true。
 boolean isRowSelected(int row)
          如果選擇了由 row 標識的行,則返回 true。
 boolean isSelectionEmpty()
          如果選擇當前為空,則返回 true。
 void removePropertyChangeListener(PropertyChangeListener listener)
          從偵聽器列表移除一個 PropertyChangeListener。
 void removeSelectionPath(TreePath path)
          從選擇中移除路徑。
 void removeSelectionPaths(TreePath[] paths)
          從選擇中移除路徑。
 void removeTreeSelectionListener(TreeSelectionListener x)
          從每次已選的 TreePath 集合發生更改時都會得到通知的偵聽器列表中移除 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[] paths)
          為該選擇設置路徑。
 

欄位詳細資訊

SINGLE_TREE_SELECTION

static final int SINGLE_TREE_SELECTION
一次只能選擇一個路徑。

另請參見:
常數欄位值

CONTIGUOUS_TREE_SELECTION

static final int CONTIGUOUS_TREE_SELECTION
選擇只能是連續的。僅當提供 RowMapper 實例時,這才被強制執行。即:如果不設置任何 RowMapper,它的功能與 DISCONTIGUOUS_TREE_SELECTION 相同。

另請參見:
常數欄位值

DISCONTIGUOUS_TREE_SELECTION

static final int DISCONTIGUOUS_TREE_SELECTION
選擇可以包含任何數量的項,這些項不必是連續的。

另請參見:
常數欄位值
方法詳細資訊

setSelectionMode

void setSelectionMode(int mode)
設置選擇模型,它必須是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。

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


getSelectionMode

int getSelectionMode()
返回當前選擇的網要(SINGLE_TREE_SELECTIONCONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 之一)。


setSelectionPath

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

參數:
path - 要選擇的新路徑

setSelectionPaths

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

參數:
paths - 新的選擇

addSelectionPath

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

參數:
path - 添加到當前選擇中的新路徑

addSelectionPaths

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

參數:
paths - 添加到當前選擇的新路徑

removeSelectionPath

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

參數:
path - 要從選擇中移除的路徑

removeSelectionPaths

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

參數:
paths - 要從選擇中移除的路徑

getSelectionPath

TreePath getSelectionPath()
返回選擇中的第一個路徑。第一個路徑由實作者定義,不一定是由 RowMapper 確定的具有最小整數值的 TreePath。


getSelectionPaths

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


getSelectionCount

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


isPathSelected

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


isSelectionEmpty

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


clearSelection

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


setRowMapper

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


getRowMapper

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


getSelectionRows

int[] getSelectionRows()
返回所有當前已選的行。如果沒有已選的 TreePath 或沒有設置 RowMapper,此方法將返回 null(或一個空陣列)。


getMinSelectionRow

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


getMaxSelectionRow

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


isRowSelected

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


resetRowSelection

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

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


getLeadSelectionRow

int getLeadSelectionRow()
返回前導選擇索引。它是添加的最後一個索引。


getLeadSelectionPath

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


addPropertyChangeListener

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

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

參數:
listener - 要添加的 PropertyChangeListener

removePropertyChangeListener

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

參數:
listener - 要移除的 PropertyChangeListener

addTreeSelectionListener

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

參數:
x - 要添加的新偵聽器

removeTreeSelectionListener

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

參數:
x - 要移除的偵聽器

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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