|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTree
public class JTree
将分层数据集显示为轮廓的控件。有关面向任务的文档和使用树的示例,请参阅《The Java Tutorial》中的 How to Use Trees 一节。
树中特定的节点可以由 TreePath
(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识。展开 节点是一个非叶节点(由返回 false 的 TreeModel.isLeaf(node)
标识),当展开 其所有祖先时,该节点将显示其子节点。折叠 节点是隐藏它们的节点。隐藏 节点是位于折叠祖先下面的节点。所有可查看 节点的父节点都是可以展开的,但是可以显示它们,也可以不显示它们。显示 节点是可查看的并且位于可以看到它的显示区域。
以下 JTree
方法使用 "visible" 来表示 "displayed":
isRootVisible()
setRootVisible()
scrollPathToVisible()
scrollRowToVisible()
getVisibleRowCount()
setVisibleRowCount()
下一组 JTree
方法使用 "visible" 表示 "viewable"(在展开的父节点下面):
isVisible()
makeVisible()
如果您有兴趣了解选择何时更改,请实现 TreeSelectionListener
接口,并使用方法 addTreeSelectionListener
添加实例。当选择更改时,将调用 valueChanged
,即如果用户在同一节点上单击两次,则仅调用 valueChanged
一次。
如果有兴趣检测双击事件或用户何时单击节点(不管是否选中它),建议您执行以下操作:
final JTree tree = ...; MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); if(selRow != -1) { if(e.getClickCount() == 1) { mySingleClick(selRow, selPath); } else if(e.getClickCount() == 2) { myDoubleClick(selRow, selPath); } } } }; tree.addMouseListener(ml);注:上述示例同时获取路径和行,但是您只需要获取感兴趣的内容。
要使用 JTree
显示复合节点(例如,同时包含图形图标和文本的节点),请为 TreeCellRenderer
创建子类,并使用 setCellRenderer(javax.swing.tree.TreeCellRenderer)
通知树使用它。要编辑此类节点,请为 TreeCellEditor
创建子类,并使用 setCellEditor(javax.swing.tree.TreeCellEditor)
。
与所有 JComponent
类一样,可以使用 InputMap
和 ActionMap
将 Action
对象与 KeyStroke
关联,并在指定条件下执行操作。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
嵌套类摘要 | |
---|---|
protected class |
JTree.AccessibleJTree
此类实现 JTree 类的可访问性支持。 |
static class |
JTree.DynamicUtilTreeNode
DynamicUtilTreeNode 可以包装 vectors/hashtables/arrays/strings 并根据需要创建适当的子树节点。 |
protected static class |
JTree.EmptySelectionModel
EmptySelectionModel 是一个不允许选择任何内容的 TreeSelectionModel 。 |
protected class |
JTree.TreeModelHandler
在移除或更改节点时,监听模型并相应地更新 expandedState 。 |
protected class |
JTree.TreeSelectionRedirector
使用 JTree 创建一个作为源的新 TreeSelectionEvent 并将其传递到所有侦听器的句柄。 |
从类 javax.swing.JComponent 继承的嵌套类/接口 |
---|
JComponent.AccessibleJComponent |
从类 java.awt.Container 继承的嵌套类/接口 |
---|
Container.AccessibleAWTContainer |
从类 java.awt.Component 继承的嵌套类/接口 |
---|
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy |
字段摘要 | |
---|---|
static String |
ANCHOR_SELECTION_PATH_PROPERTY
定位选择路径的 bound 属性名称。 |
static String |
CELL_EDITOR_PROPERTY
cellEditor 的 bound 属性名称。 |
static String |
CELL_RENDERER_PROPERTY
cellRenderer 的 bound 属性名称。 |
protected TreeCellEditor |
cellEditor
条目编辑器。 |
protected TreeCellRenderer |
cellRenderer
用于绘制节点的单元格。 |
protected boolean |
editable
树是否可以编辑?默认值为 false。 |
static String |
EDITABLE_PROPERTY
editable 的 bound 属性名称。 |
static String |
EXPANDS_SELECTED_PATHS_PROPERTY
展开选择路径属性的 bound 属性名称 |
static String |
INVOKES_STOP_CELL_EDITING_PROPERTY
messagesStopCellEditing 的 bound 属性名称。 |
protected boolean |
invokesStopCellEditing
如果为 true,则在通过更改选择、更改树中的数据或通过其他方法停止编辑时,会调用 stopCellEditing ,并保存更改。 |
static String |
LARGE_MODEL_PROPERTY
largeModel 的 bound 属性名称。 |
protected boolean |
largeModel
此树是否为大模型?这是一种代码优化设置。 |
static String |
LEAD_SELECTION_PATH_PROPERTY
leadSelectionPath 的 bound 属性名称。 |
static String |
ROOT_VISIBLE_PROPERTY
rootVisible 的 bound 属性名称。 |
protected boolean |
rootVisible
如果显示根节点,则为 true;如果其子节点为最高可见节点,则为 false。 |
static String |
ROW_HEIGHT_PROPERTY
rowHeight 的 bound 属性名称。 |
protected int |
rowHeight
用于每个显示行的高度。 |
static String |
SCROLLS_ON_EXPAND_PROPERTY
scrollsOnExpand 的 bound 属性名称。 |
protected boolean |
scrollsOnExpand
如果为 true,则当展开节点时,将滚动尽可能多的子节点,以便看到它们。 |
static String |
SELECTION_MODEL_PROPERTY
selectionModel 的 bound 属性名称。 |
protected TreeSelectionModel |
selectionModel
对此树中选择的节点集建模。 |
protected JTree.TreeSelectionRedirector |
selectionRedirector
创建一个新事件,并将它传递给 selectionListeners 。 |
static String |
SHOWS_ROOT_HANDLES_PROPERTY
showsRootHandles 的 bound 属性名称。 |
protected boolean |
showsRootHandles
如果在树的最高层显示句柄,则为 True。 |
static String |
TOGGLE_CLICK_COUNT_PROPERTY
toggleClickCount 的 bound 属性名称。 |
protected int |
toggleClickCount
展开节点之前的鼠标单击数。 |
static String |
TREE_MODEL_PROPERTY
treeModel 的 bound 属性名称。 |
protected TreeModel |
treeModel
定义此对象显示的树的模型。 |
protected TreeModelListener |
treeModelListener
更新 expandedState 。 |
static String |
VISIBLE_ROW_COUNT_PROPERTY
visibleRowCount 的 bound 属性名称。 |
protected int |
visibleRowCount
一次可见的行数。 |
从类 javax.swing.JComponent 继承的字段 |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
从类 java.awt.Component 继承的字段 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
从接口 java.awt.image.ImageObserver 继承的字段 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
构造方法摘要 | |
---|---|
JTree()
返回带有示例模型的 JTree 。 |
|
JTree(Hashtable<?,?> value)
返回从 Hashtable 创建的 JTree ,它不显示根。 |
|
JTree(Object[] value)
返回 JTree ,指定数组的每个元素作为不被显示的新根节点的子节点。 |
|
JTree(TreeModel newModel)
返回 JTree 的一个实例,它显示根节点 - 使用指定的数据模型创建树。 |
|
JTree(TreeNode root)
返回一个 JTree ,指定的 TreeNode 作为其根,它显示根节点。 |
|
JTree(TreeNode root,
boolean asksAllowsChildren)
返回一个 JTree ,指定的 TreeNode 作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。 |
|
JTree(Vector<?> value)
返回 JTree ,指定 Vector 的每个元素作为不被显示的新根节点的子节点。 |
方法摘要 | |
---|---|
void |
addSelectionInterval(int index0,
int index1)
将 index0 和 index1(包含)之间的路径添加到该选择。 |
void |
addSelectionPath(TreePath path)
将由指定的 TreePath 标识的节点添加到当前选择。 |
void |
addSelectionPaths(TreePath[] paths)
将路径数组中的每个路径添加到当前选择。 |
void |
addSelectionRow(int row)
将指定行处的路径添加到当前选择。 |
void |
addSelectionRows(int[] rows)
将每个指定行处的路径添加到当前选择。 |
void |
addTreeExpansionListener(TreeExpansionListener tel)
为 TreeExpansion 事件添加侦听器。 |
void |
addTreeSelectionListener(TreeSelectionListener tsl)
为 TreeSelection 事件添加侦听器。 |
void |
addTreeWillExpandListener(TreeWillExpandListener tel)
为 TreeWillExpand 事件添加侦听器。 |
void |
cancelEditing()
取消当前编辑会话。 |
void |
clearSelection()
清除该选择。 |
protected void |
clearToggledPaths()
清除切换的树路径的缓存。 |
void |
collapsePath(TreePath path)
确保指定路径标识的节点是折叠的,并且可查看。 |
void |
collapseRow(int row)
确保指定行中的节点是折叠的。 |
String |
convertValueToText(Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus)
通过渲染器调用以将指定值转换为文本。 |
protected static TreeModel |
createTreeModel(Object value)
返回包装指定对象的 TreeModel 。 |
protected TreeModelListener |
createTreeModelListener()
创建并返回 TreeModelHandler 的一个实例。 |
void |
expandPath(TreePath path)
确保指定路径标识的节点展开,并且可查看。 |
void |
expandRow(int row)
确保指定行中的节点展开,并且可查看。 |
void |
fireTreeCollapsed(TreePath path)
通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeExpanded(TreePath path)
通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeWillCollapse(TreePath path)
通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeWillExpand(TreePath path)
通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
protected void |
fireValueChanged(TreeSelectionEvent e)
通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
AccessibleContext |
getAccessibleContext()
获取与此 JTree 关联的 AccessibleContext。 |
TreePath |
getAnchorSelectionPath()
返回标识为定位的路径。 |
TreeCellEditor |
getCellEditor()
返回用于编辑树中条目的编辑器。 |
TreeCellRenderer |
getCellRenderer()
返回正在呈现每个单元格的当前 TreeCellRenderer 。 |
TreePath |
getClosestPathForLocation(int x,
int y)
返回离 x,y 最近的节点的路径。 |
int |
getClosestRowForLocation(int x,
int y)
返回离 x,y 最近的节点的行。 |
protected static TreeModel |
getDefaultTreeModel()
创建并返回一个示例 TreeModel 。 |
protected Enumeration<TreePath> |
getDescendantToggledPaths(TreePath parent)
返回已展开且为 parent 的子路径的 TreePaths 的 Enumeration 。 |
boolean |
getDragEnabled()
获取 dragEnabled 属性的值。 |
TreePath |
getEditingPath()
返回当前正在编辑的元素的路径。 |
Enumeration<TreePath> |
getExpandedDescendants(TreePath parent)
返回当前展开的 parent 路径的子路径的 Enumeration 。 |
boolean |
getExpandsSelectedPaths()
返回 expandsSelectedPaths 属性。 |
boolean |
getInvokesStopCellEditing()
返回告知编辑中断时发生了什么情况的指示符。 |
Object |
getLastSelectedPathComponent()
返回当前选择的第一个节点中的最后一个路径组件。 |
TreePath |
getLeadSelectionPath()
返回标识为前导的路径。 |
int |
getLeadSelectionRow()
返回与前导路径对应的行索引。 |
int |
getMaxSelectionRow()
返回选择的最后一行。 |
int |
getMinSelectionRow()
获取选择的第一行。 |
TreeModel |
getModel()
返回正在提供数据的 TreeModel 。 |
TreePath |
getNextMatch(String prefix,
int startingRow,
Position.Bias bias)
将 TreePath 返回到以一个前缀开头的下一个树元素。 |
protected TreePath[] |
getPathBetweenRows(int index0,
int index1)
返回 JTreePath 实例,它表示 index0 和 index1(包括 index1)之间的路径。 |
Rectangle |
getPathBounds(TreePath path)
返回将指定节点绘入的 Rectangle 。 |
TreePath |
getPathForLocation(int x,
int y)
返回指定位置处的节点路径。 |
TreePath |
getPathForRow(int row)
返回指定行的路径。 |
Dimension |
getPreferredScrollableViewportSize()
返回 JTree 的首选显示大小。 |
Rectangle |
getRowBounds(int row)
返回将指定行处的节点绘入的 Rectangle 。 |
int |
getRowCount()
返回当前显示的行数。 |
int |
getRowForLocation(int x,
int y)
返回指定位置的行。 |
int |
getRowForPath(TreePath path)
返回显示由指定路径标识的节点的行。 |
int |
getRowHeight()
返回每个行的高度。 |
int |
getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction)
返回块增量的数量,它是基于 orientation 的 visibleRect 高度或宽度。 |
boolean |
getScrollableTracksViewportHeight()
返回 false 指示视口的高度不能确定表的高度,除非树的首选高度小于视口高度。 |
boolean |
getScrollableTracksViewportWidth()
返回 false 指示视口的宽度不能确定表的宽度,除非树的首选宽度小于视口宽度。 |
int |
getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction)
返回滚动时增加的数量。 |
boolean |
getScrollsOnExpand()
返回 scrollsOnExpand 属性的值。 |
int |
getSelectionCount()
返回选择的节点数。 |
TreeSelectionModel |
getSelectionModel()
返回选择的模型。 |
TreePath |
getSelectionPath()
返回首选节点的路径。 |
TreePath[] |
getSelectionPaths()
返回所有选择值的路径。 |
int[] |
getSelectionRows()
返回所有当前选择的行。 |
boolean |
getShowsRootHandles()
返回 showsRootHandles 属性的值。 |
int |
getToggleClickCount()
返回展开或关闭节点所需的鼠标单击数。 |
String |
getToolTipText(MouseEvent event)
重写 JComponent 的 getToolTipText 方法,以允许使用渲染器的提示(如果渲染器设置了文本)。 |
TreeExpansionListener[] |
getTreeExpansionListeners()
返回使用 addTreeExpansionListener() 添加到此 JTree 的所有 TreeExpansionListener 的数组。 |
TreeSelectionListener[] |
getTreeSelectionListeners()
返回使用 addTreeSelectionListener() 添加到此 JTree 的所有 TreeSelectionListener 的数组。 |
TreeWillExpandListener[] |
getTreeWillExpandListeners()
返回使用 addTreeWillExpandListener() 添加到此 JTree 的所有 TreeWillExpandListener 的数组。 |
TreeUI |
getUI()
返回呈现此组件的 L&F 对象。 |
String |
getUIClassID()
返回呈现此组件的 L&F 类的名称。 |
int |
getVisibleRowCount()
返回显示区域中显示的行数。 |
boolean |
hasBeenExpanded(TreePath path)
如果已经展开路径标识的节点,则返回 true。 |
boolean |
isCollapsed(int row)
如果折叠了指定显示行处的节点,则返回 true。 |
boolean |
isCollapsed(TreePath path)
如果当前折叠了路径标识的值,则返回 true,如果当前未显示路径中的任何值,则返回 false。 |
boolean |
isEditable()
如果树可编辑,则返回 true。 |
boolean |
isEditing()
如果正在编辑树,则返回 true。 |
boolean |
isExpanded(int row)
如果当前展开了指定显示行处的节点,则返回 true。 |
boolean |
isExpanded(TreePath path)
如果当前展开了路径标识的节点,则返回 true。 |
boolean |
isFixedRowHeight()
如果每个显示行的高度为固定大小,则返回 true。 |
boolean |
isLargeModel()
如果将树配置为大模型,则返回 true。 |
boolean |
isPathEditable(TreePath path)
返回 isEditable 。 |
boolean |
isPathSelected(TreePath path)
如果当前选择了路径标识的条目,则返回 true。 |
boolean |
isRootVisible()
如果显示树的根节点,则返回 true。 |
boolean |
isRowSelected(int row)
如果选择了行标识的节点,则返回 true。 |
boolean |
isSelectionEmpty()
如果该选择当前为空,则返回 true。 |
boolean |
isVisible(TreePath path)
如果当前可查看路径标识的值,则返回 true,这意味着该路径或者是根路径,或者它的所有父路径均被展开。 |
void |
makeVisible(TreePath path)
确保路径标识的节点当前可查看。 |
protected String |
paramString()
返回此 JTree 的字符串表示形式。 |
protected boolean |
removeDescendantSelectedPaths(TreePath path,
boolean includePath)
移除选择中的任何路径( path 的子路径)。 |
protected void |
removeDescendantToggledPaths(Enumeration<TreePath> toRemove)
移除已展开的 toRemove 中 TreePaths 的所有子路径。 |
void |
removeSelectionInterval(int index0,
int index1)
从该选择中移除 index0 和 index1(包含)之间的节点。 |
void |
removeSelectionPath(TreePath path)
从当前选择中移除指定路径标识的节点。 |
void |
removeSelectionPaths(TreePath[] paths)
从当前选择移除指定路径标识的节点。 |
void |
removeSelectionRow(int row)
从当前选择移除索引 row 处的行。 |
void |
removeSelectionRows(int[] rows)
移除在每个指定行处选择的行。 |
void |
removeTreeExpansionListener(TreeExpansionListener tel)
移除 TreeExpansion 事件的侦听器。 |
void |
removeTreeSelectionListener(TreeSelectionListener tsl)
移除 TreeSelection 侦听器。 |
void |
removeTreeWillExpandListener(TreeWillExpandListener tel)
移除 TreeWillExpand 事件的侦听器。 |
void |
scrollPathToVisible(TreePath path)
确保路径中所有的路径组件均展开(最后一个路径组件除外)并滚动,以便显示该路径标识的节点。 |
void |
scrollRowToVisible(int row)
按行滚动行标识的条目,直到显示出来。 |
void |
setAnchorSelectionPath(TreePath newPath)
将标识的路径设置为定位路径。 |
void |
setCellEditor(TreeCellEditor cellEditor)
设置单元格编辑器。 |
void |
setCellRenderer(TreeCellRenderer x)
设置将用于绘制每个单元格的 TreeCellRenderer 。 |
void |
setDragEnabled(boolean b)
设置 dragEnabled 属性,该属性必须为 true 才能在此组件上启用自动化拖动处理(拖放的第一部分)。 |
void |
setEditable(boolean flag)
确定树是否可编辑。 |
protected void |
setExpandedState(TreePath path,
boolean state)
设置此 JTree 的展开状态。 |
void |
setExpandsSelectedPaths(boolean newValue)
配置 expandsSelectedPaths 属性。 |
void |
setInvokesStopCellEditing(boolean newValue)
通过选择树中的另一个节点、树的数据中的更改或通过其他方法来确定编辑被中断时发生了什么情况。 |
void |
setLargeModel(boolean newValue)
指定 UI 是否使用大模型。 |
void |
setLeadSelectionPath(TreePath newPath)
设置该路径并将其标识为前导路径。 |
void |
setModel(TreeModel newModel)
设置将提供数据的 TreeModel 。 |
void |
setRootVisible(boolean rootVisible)
确定 TreeModel 的根节点是否可见。 |
void |
setRowHeight(int rowHeight)
设置每个单元格的高度(以像素为单位)。 |
void |
setScrollsOnExpand(boolean newValue)
设置 scrollsOnExpand 属性,它确定树是否可以滚动显示以前隐藏的子节点。 |
void |
setSelectionInterval(int index0,
int index1)
选择 index0 和 index1(包含)之间的节点。 |
void |
setSelectionModel(TreeSelectionModel selectionModel)
设置树的选择模型。 |
void |
setSelectionPath(TreePath path)
选择指定路径标识的节点。 |
void |
setSelectionPaths(TreePath[] paths)
选择由指定的路径数组标识的节点。 |
void |
setSelectionRow(int row)
选择显示的指定行的节点。 |
void |
setSelectionRows(int[] rows)
选择与显示的每个指定行对应的节点。 |
void |
setShowsRootHandles(boolean newValue)
设置 showsRootHandles 属性的值,它指定是否应显示节点句柄。 |
void |
setToggleClickCount(int clickCount)
在节点展开或关闭之前,设置鼠标单击数。 |
void |
setUI(TreeUI ui)
设置呈现此组件的 L&F 对象。 |
void |
setVisibleRowCount(int newCount)
设置要显示的行数。 |
void |
startEditingAtPath(TreePath path)
选择指定路径标识的节点,并开始编辑。 |
boolean |
stopEditing()
结束当前编辑会话。 |
void |
treeDidChange()
当树被更改得足以需要调整边界大小,但还不足以需要移除展开的节点集(例如,展开或折叠节点,或者将节点插入到树)时发送。 |
void |
updateUI()
UIManager 发出的关于 L&F 已经更改的通知。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected transient TreeModel treeModel
protected transient TreeSelectionModel selectionModel
protected boolean rootVisible
protected transient TreeCellRenderer cellRenderer
null
,则 UI 使用默认 cellRenderer
。
protected int rowHeight
protected boolean showsRootHandles
句柄是一个小图标,它显示在节点旁边,用户可以单击一次此图标来展开或折叠该节点。公共接口为可以展开的节点显示加号 (+),为可以折叠的节点显示减号 (-)。节点的句柄始终显示在最高层下面。
如果 rootVisible
设置指定将显示根节点,那么该根节点是位于最高层的惟一节点。如果不显示根节点,那么其所有的子节点都位于树的最高层。始终显示节点的句柄,但最高层节点除外。
如果根节点不可见,那么通常最好的方法是将此值设为 true。否则,树看起来很像一个列表,用户可能不知道“列表条目”实际上就是树节点。
rootVisible
protected transient JTree.TreeSelectionRedirector selectionRedirector
selectionListeners
。
protected transient TreeCellEditor cellEditor
null
(树不可编辑)。
protected boolean editable
protected boolean largeModel
此值仅为 UI 的一个建议值。并不是所有的 UI 都将利用它。默认值为 false。
protected int visibleRowCount
Scrollable
接口。它可以确定显示区域的首选大小。
protected boolean invokesStopCellEditing
stopCellEditing
,并保存更改。如果为 false,则调用 cancelCellEditing
,并丢弃更改。默认值为 false。
protected boolean scrollsOnExpand
protected int toggleClickCount
protected transient TreeModelListener treeModelListener
expandedState
。
public static final String CELL_RENDERER_PROPERTY
cellRenderer
的 bound 属性名称。
public static final String TREE_MODEL_PROPERTY
treeModel
的 bound 属性名称。
public static final String ROOT_VISIBLE_PROPERTY
rootVisible
的 bound 属性名称。
public static final String SHOWS_ROOT_HANDLES_PROPERTY
showsRootHandles
的 bound 属性名称。
public static final String ROW_HEIGHT_PROPERTY
rowHeight
的 bound 属性名称。
public static final String CELL_EDITOR_PROPERTY
cellEditor
的 bound 属性名称。
public static final String EDITABLE_PROPERTY
editable
的 bound 属性名称。
public static final String LARGE_MODEL_PROPERTY
largeModel
的 bound 属性名称。
public static final String SELECTION_MODEL_PROPERTY
public static final String VISIBLE_ROW_COUNT_PROPERTY
visibleRowCount
的 bound 属性名称。
public static final String INVOKES_STOP_CELL_EDITING_PROPERTY
messagesStopCellEditing
的 bound 属性名称。
public static final String SCROLLS_ON_EXPAND_PROPERTY
scrollsOnExpand
的 bound 属性名称。
public static final String TOGGLE_CLICK_COUNT_PROPERTY
toggleClickCount
的 bound 属性名称。
public static final String LEAD_SELECTION_PATH_PROPERTY
leadSelectionPath
的 bound 属性名称。
public static final String ANCHOR_SELECTION_PATH_PROPERTY
public static final String EXPANDS_SELECTED_PATHS_PROPERTY
构造方法详细信息 |
---|
public JTree()
JTree
。树使用的默认模型可以将叶节点定义为不带子节点的任何节点。
DefaultTreeModel.asksAllowsChildren
public JTree(Object[] value)
JTree
,指定数组的每个元素作为不被显示的新根节点的子节点。默认情况下,树可以将叶节点定义为不带子节点的任何节点。
value
- Object
的数组DefaultTreeModel.asksAllowsChildren
public JTree(Vector<?> value)
JTree
,指定 Vector
的每个元素作为不被显示的新根节点的子节点。默认情况下,树可以将叶节点定义为不带子节点的任何节点。
value
- 一个 Vector
DefaultTreeModel.asksAllowsChildren
public JTree(Hashtable<?,?> value)
Hashtable
创建的 JTree
,它不显示根。HashTable
中每个键/值对的半值都成为新根节点的子节点。默认情况下,树可以将叶节点定义为不带子节点的任何节点。
value
- 一个 Hashtable
DefaultTreeModel.asksAllowsChildren
public JTree(TreeNode root)
JTree
,指定的 TreeNode
作为其根,它显示根节点。默认情况下,树可以将叶节点定义为不带子节点的任何节点。
root
- 一个 TreeNode
objectDefaultTreeModel.asksAllowsChildren
public JTree(TreeNode root, boolean asksAllowsChildren)
JTree
,指定的 TreeNode
作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。
root
- 一个 TreeNode
对象asksAllowsChildren
- 如果为 false,则不带子节点的任何节点都是叶节点;如果为 true,则只有不允许带子节点的节点是叶节点DefaultTreeModel.asksAllowsChildren
public JTree(TreeModel newModel)
JTree
的一个实例,它显示根节点 - 使用指定的数据模型创建树。
newModel
- 用作数据模型的 TreeModel
方法详细信息 |
---|
protected static TreeModel getDefaultTreeModel()
TreeModel
。主要用于 bean 生成器,来显示一些有趣的东西。
TreeModel
protected static TreeModel createTreeModel(Object value)
TreeModel
。如果对象为:Object
数组
Hashtable
或
Vector
value
- 用作 TreeModel
的基础的 Object
TreeModel
public TreeUI getUI()
TreeUI
对象public void setUI(TreeUI ui)
ui
- TreeUI
L&F 对象UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
UIManager
发出的关于 L&F 已经更改的通知。用 UIManager
的最新版本替换当前的 UI 对象。
JComponent
中的 updateUI
JComponent.updateUI()
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public TreeCellRenderer getCellRenderer()
TreeCellRenderer
。
TreeCellRenderer
public void setCellRenderer(TreeCellRenderer x)
TreeCellRenderer
。
x
- 将呈现每个单元格的 TreeCellRenderer
public void setEditable(boolean flag)
flag
- 一个 boolean 值,如果树可编辑,则为 truepublic boolean isEditable()
public void setCellEditor(TreeCellEditor cellEditor)
null
值暗示树不能编辑。如果这表示 cellEditor
中的一个更改,则在所有侦听器上调用 propertyChange
方法。
cellEditor
- 要使用的 TreeCellEditor
public TreeCellEditor getCellEditor()
TreeCellEditor
,如果树无法编辑,则返回 null
public TreeModel getModel()
TreeModel
。
TreeModel
public void setModel(TreeModel newModel)
TreeModel
。
newModel
- 将提供数据的 TreeModel
public boolean isRootVisible()
rootVisible
public void setRootVisible(boolean rootVisible)
TreeModel
的根节点是否可见。
rootVisible
- 如果将显示树的根节点,则为 truerootVisible
public void setShowsRootHandles(boolean newValue)
showsRootHandles
属性的值,它指定是否应显示节点句柄。此属性的默认值取决于用于创建 JTree
的构造方法。某些外观可能不支持句柄;它们将忽略此属性。
newValue
- 如果显示根句柄,则为 true
;否则为 false
showsRootHandles
,
getShowsRootHandles()
public boolean getShowsRootHandles()
showsRootHandles
属性的值。
showsRootHandles
属性的值showsRootHandles
public void setRowHeight(int rowHeight)
rowHeight
- 每个单元格的高度(以像素为单位)public int getRowHeight()
public boolean isFixedRowHeight()
public void setLargeModel(boolean newValue)
newValue
- 如果 UI 使用大模型,则为 truelargeModel
public boolean isLargeModel()
largeModel
public void setInvokesStopCellEditing(boolean newValue)
true
可导致在编辑被中断时自动保存更改。
激发 INVOKES_STOP_CELL_EDITING_PROPERTY 的属性更改。
newValue
- true 意味着当编辑中断时,调用 stopCellEditing
,并保存数据;false 意味着调用 cancelCellEditing
,并丢失更改public boolean getInvokesStopCellEditing()
setInvokesStopCellEditing(boolean)
public void setScrollsOnExpand(boolean newValue)
scrollsOnExpand
属性,它确定树是否可以滚动显示以前隐藏的子节点。如果此属性为 true
(默认值),则当节点展开时,树可以使用滚动来显示该节点的尽可能多的子节点。某些外观中,树在展开时可能不需要滚动;这些外观会忽略此属性。
newValue
- false
表示展开时禁用滚动;true
表示启用滚动getScrollsOnExpand()
public boolean getScrollsOnExpand()
scrollsOnExpand
属性的值。
scrollsOnExpand
属性的值public void setToggleClickCount(int clickCount)
public int getToggleClickCount()
public void setExpandsSelectedPaths(boolean newValue)
expandsSelectedPaths
属性。如果为 true,则在任何时候通过 TreeSelectionModel
或 JTree
提供的覆盖方法更改选择时,将展开 TreePath
的父路径,使它们可见(可见是指父路径不一定在 JTree
的可见矩形内展开)。如果为 false,当选择更改时,节点的父节点不可见(展开的所有父节点)。如果希望使您的选择模型维持并不总是可见的路径(展开的所有父路径),那么这一点非常有用。
newValue
- expandsSelectedPaths
的新值public boolean getExpandsSelectedPaths()
expandsSelectedPaths
属性。
setExpandsSelectedPaths(boolean)
public void setDragEnabled(boolean b)
dragEnabled
属性,该属性必须为 true
才能在此组件上启用自动化拖动处理(拖放的第一部分)。需要将 transferHandler
属性设置为非 null
值,以便拖动执行操作。dragEnabled
属性的默认值为 false
。
当启用自动化拖动处理时,只要用户在选择上按住鼠标按钮,并将鼠标移动几个像素,多数外观就会开始拖放操作。因此,将此属性设置为 true
可以对选择行为产生微妙的影响。
有些外观可能不支持自动拖放;它们将忽略此属性。可以通过修改该组件直接调用 TransferHandler
的 exportAsDrag
方法来解决此类外观。
b
- 设置 dragEnabled
属性的值
HeadlessException
- 如果 b
为 true
,并且 GraphicsEnvironment.isHeadless()
返回 true
GraphicsEnvironment.isHeadless()
,
getDragEnabled()
,
JComponent.setTransferHandler(javax.swing.TransferHandler)
,
TransferHandler
public boolean getDragEnabled()
dragEnabled
属性的值。
dragEnabled
属性的值setDragEnabled(boolean)
public boolean isPathEditable(TreePath path)
isEditable
。在编辑开始确保给定的路径可以编辑之前,这可以从 UI 调用。这作为子类的入口点提供,以添加经过过滤的编辑,而无需借助于创建新编辑器。
isEditable()
public String getToolTipText(MouseEvent event)
JComponent
的 getToolTipText
方法,以允许使用渲染器的提示(如果渲染器设置了文本)。
注:对于要正确显示其渲染器工具提示的 JTree
,JTree
必须是向 ToolTipManager
注册的组件。这可以通过调用 ToolTipManager.sharedInstance().registerComponent(tree)
来完成。它不能自动完成!
JComponent
中的 getToolTipText
event
- 启动 ToolTip
显示的 MouseEvent
event
为 null,则返回 null
public String convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
value.toString
,忽略所有其他参数。要控制此转换,为此方法创建子类,并使用需要的任何参数。
value
- 要转换成文本的 Object
selected
- 如果选中节点,则为 trueexpanded
- 如果展开节点,则为 trueleaf
- 如果节点是叶节点,则为 truerow
- 指定节点的显示行的整数,其中 0 表示显示的第一行hasFocus
- 如节点有焦点,则为 true
String
表示形式public int getRowCount()
public void setSelectionPath(TreePath path)
getExpandsSelectedPaths
为 true,则公开它(可查看)。
path
- 指定要选择的节点的 TreePath
public void setSelectionPaths(TreePath[] paths)
getExpandsSelectedPaths
为 true,则公开它(可查看)。
paths
- 指定要选择的节点的一组 TreePath
对象public void setLeadSelectionPath(TreePath newPath)
JTree
不维持前导路径,UI 将更新它。
newPath
- 新的前导路径public void setAnchorSelectionPath(TreePath newPath)
JTree
不维持定位路径,UI 将更新它。
newPath
- 新的定位路径public void setSelectionRow(int row)
row
- 要选择的行,其中 0 是显示的第一行public void setSelectionRows(int[] rows)
rows
的特定元素 < 0 或 >= getRowCount
,则它会被忽略。如果 rows
中的元素都不是有效的行,则会清除该选择。这就好像调用 clearSelection
一样。
rows
- 指定要选择的行的一组整数,其中 0 指示显示的第一行public void addSelectionPath(TreePath path)
TreePath
标识的节点添加到当前选择。如果路径的所有组件都不可查看,并且 getExpandsSelectedPaths
为 true,则其可以查看。
注意,JTree
不允许完全相同的节点作为子节点存在于同一父节点之下 - 每个兄弟节点必须是惟一的对象。
path
- 要添加的 TreePath
public void addSelectionPaths(TreePath[] paths)
getExpandsSelectedPaths
为 true,则其可以查看。
注意,JTree
不允许完全相同的节点作为子节点存在于同一父节点之下 - 每个兄弟节点必须是惟一的对象。
paths
- 指定要添加的节点的一组 TreePath
对象public void addSelectionRow(int row)
row
- 指定要添加的节点行的整数,其中 0 表示显示的第一行public void addSelectionRows(int[] rows)
rows
- 指定要添加的行的一组整数,其中 0 指示显示的第一行public Object getLastSelectedPathComponent()
TreePath
中的最后一个 Object
,若未选择任何内容,则返回 null
TreePath.getLastPathComponent()
public TreePath getLeadSelectionPath()
public TreePath getAnchorSelectionPath()
public TreePath getSelectionPath()
TreePath
,如果当前未选择任何内容,则返回 null
public TreePath[] getSelectionPaths()
TreePath
对象的数组,如果当前未选择任何内容,则返回 null
public int[] getSelectionRows()
TreeSelectionModel
。若未选择任何内容,则返回 null
或一个空数组,具体取决于 TreeSelectionModel
的实现。
public int getSelectionCount()
public int getMinSelectionRow()
public int getMaxSelectionRow()
public int getLeadSelectionRow()
leadPath
为 null
,则为 -1public boolean isPathSelected(TreePath path)
path
- 标识节点的 TreePath
public boolean isRowSelected(int row)
row
- 指定一个显示行的整数,其中 0 表示显示的第一行
public Enumeration<TreePath> getExpandedDescendants(TreePath parent)
parent
路径的子路径的 Enumeration
。如果当前没有展开 parent
,将返回 null
。如果在返回的 Enumeration
上迭代时展开/折叠节点,则不能返回所有展开的路径,或者可能返回不再展开的路径。
parent
- 要检查的路径
parent
的子路径的 Enumeration
,如果当前没有展开 parent
,则返回 null
public boolean hasBeenExpanded(TreePath path)
path
,则返回 truepublic boolean isExpanded(TreePath path)
path
- 指定要检查的节点的 TreePath
public boolean isExpanded(int row)
row
- 要检查的行,其中 0 表示显示的第一行
public boolean isCollapsed(TreePath path)
path
- 要检查的 TreePath
public boolean isCollapsed(int row)
row
- 要检查的行,其中 0 表示显示的第一行
public void makeVisible(TreePath path)
path
- 使之可查看的 TreePath
public boolean isVisible(TreePath path)
public Rectangle getPathBounds(TreePath path)
Rectangle
。如果隐藏了路径中的任何组件(在折叠的父路径下),则返回 null
。
注:
此方法返回一个有效的矩形,即使当前不显示指定的节点。
path
- 标识节点的 TreePath
Rectangle
,或者返回 null
public Rectangle getRowBounds(int row)
Rectangle
。
row
- 要绘制的行,其中 0 表示显示的第一行
Rectangle
public void scrollPathToVisible(TreePath path)
JTree
包含在 JScrollPane
中时才工作。
path
- 标识引入视图的节点的 TreePath
public void scrollRowToVisible(int row)
JTree
包含在 JScrollPane
中时才工作。
row
- 指定要滚动的行的整数,其中 0 表示显示的第一行public TreePath getPathForRow(int row)
row
不可见,则返回 null
。
row
- 指定行的整数
TreePath
,如果 row < 0
或 row > getRowCount()
,则返回 null
public int getRowForPath(TreePath path)
path
- 标识节点的 TreePath
public void expandPath(TreePath path)
path
- 标识节点的 TreePath
public void expandRow(int row)
如果 row
< 0 或 >= getRowCount
,则无效。
row
- 指定一个显示行的整数,其中 0 表示显示的第一行public void collapsePath(TreePath path)
path
- 标识节点的 TreePath
public void collapseRow(int row)
如果 row
< 0 或 >= getRowCount
,则无效。
row
- 指定一个显示行的整数,其中 0 表示显示的第一行public TreePath getPathForLocation(int x, int y)
x
- 提供水平像素数的整数,从显示区域左边开始减去左边距y
- 提供垂直像素数的整数,从显示区域顶部开始减去顶边距
TreePath
public int getRowForLocation(int x, int y)
x
- 提供水平像素数的整数,从显示区域左边开始减去左边距y
- 提供垂直像素数的整数,从显示区域顶部开始减去顶边距
getClosestRowForLocation(int, int)
public TreePath getClosestPathForLocation(int x, int y)
null
,否则始终返回有效路径。要测试该节点是否正好位于 x, y,请获取该节点的边界,并根据该边界测试 x, y。
x
- 提供水平像素数的整数,从显示区域左边开始减去左边距y
- 提供垂直像素数的整数,从显示区域顶部开始减去顶边距
TreePath
,如果没有可查看内容,或不存在模型,则返回 null
getPathForLocation(int, int)
,
getPathBounds(javax.swing.tree.TreePath)
public int getClosestRowForLocation(int x, int y)
x
- 提供水平像素数的整数,从显示区域左边开始减去左边距y
- 提供垂直像素数的整数,从显示区域顶部开始减去顶边距
getRowForLocation(int, int)
,
getRowBounds(int)
public boolean isEditing()
getSelectionPath
可以获取正在编辑的项。
getSelectionPath()
public boolean stopEditing()
DefaultTreeCellEditor
对象可以保存当前在单元格上进行的任何编辑。其他实现可以进行不同方式的操作。)如果不编辑树,则没有任何影响。
注:
当用户在树中更改它们的位置时,要使编辑-保存自动化,请使用setInvokesStopCellEditing(boolean)
。
public void cancelEditing()
public void startEditingAtPath(TreePath path)
CellEditor
不允许编辑指定的项,则编辑尝试失败。
path
- 标识节点的 TreePath
public TreePath getEditingPath()
TreePath
public void setSelectionModel(TreeSelectionModel selectionModel)
null
值,则使用空 selectionModel
,不允许选择。
selectionModel
- 要使用的 TreeSelectionModel
,或者是要禁用选择的 null
TreeSelectionModel
public TreeSelectionModel getSelectionModel()
null
值。如果您不希望允许选择任何内容,则将选择模型设置为 null
,它会强制使用空选择模型。
setSelectionModel(javax.swing.tree.TreeSelectionModel)
protected TreePath[] getPathBetweenRows(int index0, int index1)
JTreePath
实例,它表示 index0 和 index1(包括 index1)之间的路径。Returns 如果不存在树,则返回 null
。
index0
- 指定一个显示行的整数,其中 0 表示显示的第一行index1
- 指定第二个显示行的整数
TreePath
对象的数组(index0 和 index1 之间的每个节点包含一个该对象);如果不存在树,则返回 null
public void setSelectionInterval(int index0, int index1)
index0
- 指定一个显示行的整数,其中 0 是显示的第一行index1
- 指定第二个显示行的整数public void addSelectionInterval(int index0, int index1)
index0
- 指定一个显示行的整数,其中 0 是显示的第一行index1
- 指定第二个显示行的整数public void removeSelectionInterval(int index0, int index1)
index0
- 指定一个显示行的整数,其中 0 是显示的第一行index1
- 指定第二个显示行的整数public void removeSelectionPath(TreePath path)
path
- 标识节点的 TreePath
public void removeSelectionPaths(TreePath[] paths)
paths
- 指定要移除的节点的一组 TreePath
对象public void removeSelectionRow(int row)
row
处的行。
row
- 要移除的行public void removeSelectionRows(int[] rows)
rows
- 指定显示行的一组整数,其中 0 表示显示的第一行public void clearSelection()
public boolean isSelectionEmpty()
public void addTreeExpansionListener(TreeExpansionListener tel)
TreeExpansion
事件添加侦听器。
tel
- 当树节点展开或折叠(“负展开”)时,将要通知的 TreeExpansionListenerpublic void removeTreeExpansionListener(TreeExpansionListener tel)
TreeExpansion
事件的侦听器。
tel
- 要移除的 TreeExpansionListener
public TreeExpansionListener[] getTreeExpansionListeners()
TreeExpansionListener
的数组。
TreeExpansionListener
,若未添加任何侦听器,则返回空数组public void addTreeWillExpandListener(TreeWillExpandListener tel)
TreeWillExpand
事件添加侦听器。
tel
- 当树节点展开或折叠(“负展开”)时,将要通知的 TreeWillExpandListener
public void removeTreeWillExpandListener(TreeWillExpandListener tel)
TreeWillExpand
事件的侦听器。
tel
- 要移除的 TreeWillExpandListener
public TreeWillExpandListener[] getTreeWillExpandListeners()
TreeWillExpandListener
的数组。
TreeWillExpandListener
,若未添加任何侦听器,则返回空数组public void fireTreeExpanded(TreePath path)
path
参数以延迟方式创建事件实例。
path
- 指示展开的节点的 TreePath
EventListenerList
public void fireTreeCollapsed(TreePath path)
path
参数以延迟方式创建事件实例。
path
- 指示折叠的节点的 TreePath
EventListenerList
public void fireTreeWillExpand(TreePath path) throws ExpandVetoException
path
参数以延迟方式创建事件实例。
path
- 指示展开的节点的 TreePath
ExpandVetoException
EventListenerList
public void fireTreeWillCollapse(TreePath path) throws ExpandVetoException
path
参数以延迟方式创建事件实例。
path
- 指示展开的节点的 TreePath
ExpandVetoException
EventListenerList
public void addTreeSelectionListener(TreeSelectionListener tsl)
TreeSelection
事件添加侦听器。
tsl
- 当选中或取消选中(“负选择”)节点时,将要通知的 TreeSelectionListener
public void removeTreeSelectionListener(TreeSelectionListener tsl)
TreeSelection
侦听器。
tsl
- 要移除的 TreeSelectionListener
public TreeSelectionListener[] getTreeSelectionListeners()
TreeSelectionListener
的数组。
TreeSelectionListener
,若未添加任何侦听器,则返回空数组protected void fireValueChanged(TreeSelectionEvent e)
e
- 要激发的 TreeSelectionEvent
;当选中或取消选中节点时,由 TreeSelectionModel
生成。EventListenerList
public void treeDidChange()
public void setVisibleRowCount(int newCount)
JScrollPane
中时才工作,并将调整首选大小和该滚动窗格的大小。
newCount
- 要显示的行数public int getVisibleRowCount()
public TreePath getNextMatch(String prefix, int startingRow, Position.Bias bias)
TreePath
到字符串的转换,将用到 convertValueToText
。
prefix
- 要测试是否匹配的字符串startingRow
- 用于启动搜索的行bias
- 搜索方向,Position.Bias.Forward 或 Position.Bias.Backward。
IllegalArgumentException
- 如是前缀为 null,或 startingRow 在边界之外public Dimension getPreferredScrollableViewportSize()
JTree
的首选显示大小。高度根据 getVisibleRowCount
确定,宽度是当前的首选宽度。
Scrollable
中的 getPreferredScrollableViewportSize
Dimension
对象JComponent.getPreferredSize()
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
Scrollable
中的 getScrollableUnitIncrement
visibleRect
- 视口中可见的视图区域orientation
- SwingConstants.VERTICAL
或 SwingConstants.HORIZONTAL
direction
- 小于零向上/左滚动,大于零向下/右滚动
JScrollBar.setUnitIncrement(int)
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
orientation
的 visibleRect
高度或宽度。
Scrollable
中的 getScrollableBlockIncrement
visibleRect
- 视口中可见的视图区域orientation
- SwingConstants.VERTICAL
或 SwingConstants.HORIZONTAL
direction
- 小于零向上/左滚动,大于零向下/右滚动。
JScrollBar.setBlockIncrement(int)
public boolean getScrollableTracksViewportWidth()
Scrollable
中的 getScrollableTracksViewportWidth
Scrollable.getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
Scrollable
中的 getScrollableTracksViewportHeight
Scrollable.getScrollableTracksViewportHeight()
protected void setExpandedState(TreePath path, boolean state)
JTree
的展开状态。如果 state
为 true,则 path
的所有父路径和路径都被标记为展开。如果 state
为 false,则 path
的所有父路径被标记为展开,但是 path
本身被标记为折叠。
如果 TreeWillExpandListener
禁止它,则会失败。
protected Enumeration<TreePath> getDescendantToggledPaths(TreePath parent)
parent
的子路径的 TreePaths
的 Enumeration
。
protected void removeDescendantToggledPaths(Enumeration<TreePath> toRemove)
toRemove
中 TreePaths
的所有子路径。
protected void clearToggledPaths()
TreeExpansionListener
事件。
protected TreeModelListener createTreeModelListener()
TreeModelHandler
的一个实例。返回的对象负责 TreeModel
更改时更新展开的状态。
有关展开状态的含义的更多信息,请参阅上述 JTree 描述。
protected boolean removeDescendantSelectedPaths(TreePath path, boolean includePath)
path
的子路径)。如果 includePath
为 true,并且选中 path
,则从该选择中移除它。
protected String paramString()
JTree
的字符串表示形式。此方法仅在进行调试的时候使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可能为空,但不可能为 null
。
JComponent
中的 paramString
JTree
的字符串表示形式。public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。