Mega Code Archive

 
Categories / Java / Event
 

Find the 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);     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;   } }