Java FocusTraversalPolicy get previous focusable component
import java.awt.Component; import java.awt.Container; import java.awt.FlowLayout; import java.awt.FocusTraversalPolicy; import java.awt.KeyboardFocusManager; import javax.swing.JButton; import javax.swing.JFrame; public class Main { public static void main(String[] argv) { JFrame frame = new JFrame(); JButton component1 = new JButton("1"); JButton component2 = new JButton("2"); JButton component3 = new JButton("3"); frame.setLayout(new FlowLayout()); frame.add(component1);/*from w ww . j a v a 2s . c o m*/ frame.add(component2); frame.add(component3); frame.pack(); frame.setVisible(true); System.out.println(findPrevFocus().getName()); } public static Component findPrevFocus() { Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); Container root = c.getFocusCycleRootAncestor(); FocusTraversalPolicy policy = root.getFocusTraversalPolicy(); Component prevFocus = policy.getComponentBefore(root, c); if (prevFocus == null) { prevFocus = policy.getDefaultComponent(root); } return prevFocus; } }