Java examples for Swing:JTree
move Down JTree Node
/*/*from w ww . j a va 2 s. co m*/ * Copyright 2003-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //package com.java2s; import javax.swing.JTree; import javax.swing.tree.TreePath; import java.awt.Rectangle; public class Main { public static void moveDown(JTree tree) { int size = tree.getRowCount(); int row = getSelectedRow(tree); if (row < size - 1) { row++; showAndSelect(tree, row, row + 2, row, true); } } private static int getSelectedRow(JTree tree) { return tree.getRowForPath(tree.getSelectionPath()); } private static void showAndSelect(JTree tree, int top, int bottom, int row, boolean centerHorizontally) { int size = tree.getRowCount(); if (size == 0) { tree.clearSelection(); return; } if (top < 0) { top = 0; } if (bottom >= size) { bottom = size - 1; } Rectangle topBounds = tree.getRowBounds(top); Rectangle bottomBounds = tree.getRowBounds(bottom); Rectangle bounds; if (topBounds == null) { bounds = bottomBounds; } else if (bottomBounds == null) { bounds = topBounds; } else { bounds = topBounds.union(bottomBounds); } if (bounds != null) { TreePath path = tree.getPathForRow(row); if (path != null && path.getParentPath() != null) { Rectangle parentBounds = tree.getPathBounds(path .getParentPath()); if (parentBounds != null) { bounds.x = parentBounds.x; } } if (!centerHorizontally) { bounds.x = 0; bounds.width = tree.getWidth(); } else { bounds.width = Math.min(bounds.width, tree.getVisibleRect().width); } tree.scrollRectToVisible(bounds); } tree.setSelectionRow(row); } }