Wednesday, January 28, 2015

Set focus on second JTextField in a JDialog

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TestFocus extends JFrame
    {
     JButton button; public TestFocus()
         {
         JPanel panel = new JPanel();
         setContentPane( panel );
         panel.add( new JTextField( "Focus is on Click Me button", 20 ) );
         button = new JButton( "Click Me" );
         button.addActionListener( new ActionListener()
             {
             public void actionPerformed(ActionEvent e)
                 {
                 JDialog dialog = new JDialog1();
             }
         });
         panel.add( button );
         // Listen for windowOpened event to set focus
         addWindowListener( new WindowAdapter()
             {
             public void windowOpened( WindowEvent e )
                 {
                 button.requestFocus();
             }
         });
     }
     public static void main(String[] args)
         {
         TestFocus frame = new TestFocus();
         frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
         frame.pack();
         frame.setVisible(true);
         // frame.button.requestFocus();
     }
     class JDialog1 extends JDialog
         {
         public JDialog1()
             {
             JPanel panel = new JPanel();
             setContentPane( panel);
             panel.add( new JTextField( "Focus is on next Text Field", 20) );
             final JTextField tf1 = new JTextField(9);
             panel.add( tf1 );
             pack();
             // Use invokeLater AFTER the dialog is shown
             setVisible( true );
             SwingUtilities.invokeLater( new Runnable()
                 {
                 public void run()
                     {
                     tf1.requestFocus();
                 }
             });
         }
     }
}

No comments:

Post a Comment