Here you can find the source of compareTabOrder(Component a, Component b)
public static boolean compareTabOrder(Component a, Component b)
//package com.java2s; /*/*w w w.j a va 2 s . 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 */ import java.awt.Component; import java.awt.Rectangle; import javax.swing.JComponent; public class Main { 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); } }