Java examples for Swing:JComponent
set Default Components Tab Order
/*// w ww. ja v a 2s. c o m This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ //package com.java2s; import java.awt.Component; import java.awt.Rectangle; import java.util.Vector; import javax.swing.JComponent; public class Main { public static void setDefaultComponentsTabOrder(Vector v) { // Component children[] = co.getComponents(); // Component tmp; Object tmp; int i, j, c; /** Get the tab order from the geometry **/ for (i = 0, c = v.size(); i < c; i++) { for (j = i; j < c; j++) { if (i == j) continue; if (compareTabOrder((Component) v.elementAt(j), (Component) v.elementAt(i))) { tmp = v.elementAt(i); // tmp = children[i]; v.setElementAt(v.elementAt(j), i); // children[i] = children[j]; v.setElementAt(tmp, j); // children[j] = tmp; } } } // return children; } public static boolean compareTabOrder(Component a, Component b) { Rectangle bounds; int ay, by; int ax, bx; if (a instanceof JComponent) { ay = ((JComponent) a).getY(); ax = ((JComponent) a).getX(); } else { bounds = a.getBounds(); ay = bounds.y; ax = bounds.x; } if (b instanceof JComponent) { by = ((JComponent) b).getY(); bx = ((JComponent) b).getX(); } else { bounds = b.getBounds(); by = bounds.y; bx = bounds.x; } if (Math.abs(ay - by) < 10) { return (ax < bx); } return (ay < by); } }