e614. Setting the Initial Focused Component in a Window
There is no straightforward way to set the initial focused component in a window. The typical method is to add a window listener to listen for the window opened event and then make the desired component request the focus.
// Create frame and three buttons JFrame frame = new JFrame(); JButton component1 = new JButton("1"); JButton component2 = new JButton("2"); JButton component3 = new JButton("3"); // Set component with initial focus; must be done before the frame is made visible InitialFocusSetter.setInitialFocus(frame, component2); class InitialFocusSetter { public static void setInitialFocus(Window w, Component c) { w.addWindowListener(new FocusSetter(c)); } public static class FocusSetter extends WindowAdapter { Component initComp; FocusSetter(Component c) { initComp = c; } public void windowOpened(WindowEvent e) { initComp.requestFocus(); // Since this listener is no longer needed, remove it e.getWindow().removeWindowListener(this); } } }
Related Examples |