Mega Code Archive

 
Categories / Java Tutorial / Swing Event
 

Request Focus inside a window

import java.awt.AWTEventMulticaster; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; public class KeyTextComponent extends JComponent {   private ActionListener actionListenerList = null;   public KeyTextComponent() {     setBackground(Color.CYAN);     KeyListener internalKeyListener = new KeyAdapter() {       public void keyPressed(KeyEvent keyEvent) {         if (actionListenerList != null) {           int keyCode = keyEvent.getKeyCode();           String keyText = KeyEvent.getKeyText(keyCode);           ActionEvent actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, keyText);           actionListenerList.actionPerformed(actionEvent);         }       }     };     MouseListener internalMouseListener = new MouseAdapter() {       public void mousePressed(MouseEvent mouseEvent) {         requestFocusInWindow();       }     };     addKeyListener(internalKeyListener);     addMouseListener(internalMouseListener);   }   public void addActionListener(ActionListener actionListener) {     actionListenerList = AWTEventMulticaster.add(actionListenerList, actionListener);   }   public void removeActionListener(ActionListener actionListener) {     actionListenerList = AWTEventMulticaster.remove(actionListenerList, actionListener);   }   public boolean isFocusable() {     return true;   }   public static void main(String[] a){     JFrame frame = new JFrame();     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.add(new KeyTextComponent(), BorderLayout.CENTER);     JTextField field = new JTextField();     field.setText("Click above blank area to request focus");     frame.add(field, BorderLayout.SOUTH);     frame.setSize(300, 100);     frame.setVisible(true);     field.requestFocus();   } }