JComponent.scrollRectToVisible--方法
public void scrollRectToVisible(Rectangle aRect)
-
将
scrollRectToVisible()
消息转发到JComponent
的父组件。可执行该请求的组件(如JViewport
)会重写此方法并执行滚动。 -
-
参数:
-
aRect
- 可见的Rectangle
另请参见:
-
JViewport
具体如JTable实现某行滚动到可视图区域如下:
1. 得到对象Rectangle
JTable.getCellRect(int row, int column, boolean includeSpacing)
返回位于 row
和 column
相交位置的单元格矩形
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
-
返回位于
row
和column
相交位置的单元格矩形。如果includeSpacing
为 true,则返回的值具有指定行和列的完整高度和宽度。如果为 false,则返回的矩形为单元格空间减去单元格间的间隙,以便在呈现期间设置该属性后,返回呈现和编辑的组件的真实边界。如果列索引有效但是行索引小于 0,则此方法返回一个矩形,此矩形的
y
和height
设置为合适的值,其x
和width
值都设置为 0。通常,行索引或列索引指示适当区域外的单元格时,此方法都返回一个矩形,它描绘了表范围内最近单元格的最近边。当行索引和列索引都超出范围时,返回的矩形覆盖了最近单元格的最近点。在所有的情形中,使用此方法沿一个轴的计算结果不会因为沿另一个轴的计算出现异常而失败。当单元格无效时,忽略
includeSpacing
参数。 -
-
参数:
-
row
- 所需单元格所在的行索引 -
column
- 所需单元格所在的列索引;不一定与表中数据模型的列索引相同;convertColumnIndexToView(int)
方法可以用来将数据模型的列索引转换为显示的列索引 -
includeSpacing
- 如果为 false,则返回实际的单元格边界,计算方法是从列模型和行模型的高度和宽度中减去单元格间距
返回:
-
包含
row
、column
处单元格的矩形
另请参见:
-
getIntercellSpacing()
-
Rectangle rec = JTable.getCellRect(int row, int column, true); //column可为0, row为表格行号
2. JTable..scrollRectToVisible(rec);就可以了.实际上是调用JComponent.scrollRectToVisible(rec);
具体如JTree行滚动到可视图区域有专门的方法如下:
JTree.scrollPathToVisible(TreePath path) ---
scrollPathToVisible(TreePath path) 确保路径中所有的路径组件均展开(最后一个路径组件除外)并滚动,以便显示该路径标识的节点。
TreePath获得方法:
1.JTree.LeadSelectionPath()
2.JTreegetPathForLocation(int x, int y)
3.JTree.getPathForRow(int row)
4.DefaultMutableTreeNode.getPath() //返回从根到达此节点的路径 TreeNode[]
TreePath(Object[] path)//可构造出TreePath对象,传入参数TreeNode[].
树节点展开方法:这是一个保护方法,需要继承树才能重写
protected void | setExpandedState(TreePath path, boolean state) 设置此 JTree 的展开状态。 |
setExpandedState
protected void setExpandedState(TreePath path, boolean state)
-
设置此
JTree
的展开状态。 如果state
为 true,则path
的所有父路径和路径都被标记为展开。如果state
为 false,则path
的所有父路径被标记为展开,但是path
本身被标记为折叠。如果
TreeWillExpandListener
禁止它,则会失败。
void | collapsePath(TreePath path) 确保指定路径标识的节点是折叠的,并且可查看。 |
void | collapseRow(int row) 确保指定行中的节点是折叠的。 |
collapsePath
public void collapsePath(TreePath path)
- 确保指定路径标识的节点是折叠的,并且可查看。
-
-
参数:
-
path
- 标识节点的TreePath
-
collapseRow
public void collapseRow(int row)
-
确保指定行中的节点是折叠的。
如果
row
< 0 或 >=getRowCount
,则此方法无效。 -
-
-
参数:
-
row
- 指定一个显示行的整数,其中 0 表示显示的第一行
-
JTREE展开(不展开子节点)
方法1:protected void setExpandedState(TreePath path, boolean state)--树节点展开方法:这是一个保护方法,需要继承树才能重写.待测试.
public class JTreeEx extends JTree
{
private static final long serialVersionUID = 1L;
public JTreeEx(TreeModel newModel)
{
super(newModel);
}
@Override
public void setExpandedState(TreePath path, boolean state)
{
super.setExpandedState(path, state);
}
}
for (int i = 0; i < tree.getRowCount(); i++)
{
TreePath tp = tree.getPathForRow(i);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent();
if ("country1".equals(node.getUserObject().toString()))
{
// tree.setExpandedState(tp, false);--此方法不好使.后续有时间再测试,现用下面的方法实现.
tree.expandPath(tp);//先展开,
Enumeration<?> enums = node.children();
while (enums.hasMoreElements())
{
DefaultMutableTreeNode dtn = (DefaultMutableTreeNode) enums.nextElement();
TreePath tp1 = tp.pathByAddingChild(dtn);
tree.collapsePath(tp1);//后收缩
System.out.println("expande tp1:" + tp1);
}
}
}
}
方法2:先展开后收缩.
即public void collapsePath(TreePath path)--会展开此路径的所有父节点和子节点
public void expandPath(TreePath path)---收缩所有子节点.