I have a JPanel loaded in a JFrame . JPanel contains 4 JButtons. What I'm trying to do is automatically adjust the focus on the 1st button so that I can navigate between JButtons using the keyboard.
I tried the code jButton1.requestFocusInWindow(); inside the jpanel constructor, but still it didn't work. Is there something I'm missing? What else can I do?
Edit: The project contains 3 java files and their code is as follows:
NewJFrame.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sampleui; import java.awt.Container; import java.awt.Toolkit; import javax.swing.JRootPane; import javax.swing.UIManager; /** * * @author Administrator */ public class NewJFrame extends javax.swing.JFrame { static Container container; /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); rootPane= getRootPane(); container=getContentPane(); setSize(Toolkit.getDefaultToolkit().getScreenSize()); setVisible(true); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jMenuItem1 = new javax.swing.JMenuItem(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jDesktopPane1 = new javax.swing.JDesktopPane(); jMenuItem1.setText("jMenuItem1"); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("This is the Title"); jPanel1.setBackground(new java.awt.Color(204, 204, 204)); jPanel1.setLayout(new java.awt.BorderLayout()); jLabel2.setForeground(new java.awt.Color(255, 255, 255)); jPanel1.add(jLabel2, java.awt.BorderLayout.PAGE_START); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel5.setForeground(new java.awt.Color(51, 51, 51)); jLabel5.setText("dfgdfgdfg"); jPanel1.add(jLabel5, java.awt.BorderLayout.LINE_START); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel6.setText("dfgdfgdfg"); jPanel1.add(jLabel6, java.awt.BorderLayout.LINE_END); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("dfgdfgfdgfdgfdg"); jPanel1.add(jLabel1, java.awt.BorderLayout.CENTER); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel3.setText("jLabel3"); jPanel1.add(jLabel3, java.awt.BorderLayout.PAGE_END); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START); jPanel2.setBackground(new java.awt.Color(204, 204, 204)); jPanel2.setLayout(new java.awt.BorderLayout()); jLabel7.setText("jLabel7"); jPanel2.add(jLabel7, java.awt.BorderLayout.LINE_START); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel8.setText("jLabel8"); jPanel2.add(jLabel8, java.awt.BorderLayout.LINE_END); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel9.setText("jLabel9"); jPanel2.add(jLabel9, java.awt.BorderLayout.CENTER); getContentPane().add(jPanel2, java.awt.BorderLayout.PAGE_END); jDesktopPane1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jDesktopPane1MouseClicked(evt); } }); getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold> private void jDesktopPane1MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: container=getContentPane(); setSize(Toolkit.getDefaultToolkit().getScreenSize()); setVisible(true); //callCompanyOption(); container.setVisible(false); jDesktopPane1.setVisible(false); NewJPanel p=new NewJPanel(); //p.setBounds(40, 30, 1200, 786); container.add(p); container.setVisible(true); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; // End of variables declaration }
NewJPanel.java
package sampleui; import java.awt.Component; import java.awt.Container; import java.awt.event.KeyEvent; public class NewJPanel extends javax.swing.JPanel { public NewJPanel() { initComponents(); } @SuppressWarnings("unchecked")
NewJPanel1.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sampleui; import java.awt.Window; import java.awt.event.KeyEvent; import javax.swing.JRootPane; /** * * @author Administrator */ public class NewJPanel1 extends javax.swing.JPanel { //=new NewJFrame(); /** * Creates new form NewJPanel1 */ public NewJPanel1() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); setRequestFocusEnabled(false); addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { formKeyPressed(evt); } }); setLayout(new java.awt.GridBagLayout()); jPanel1.setNextFocusableComponent(jButton5); jPanel1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jPanel1KeyPressed(evt); } public void keyReleased(java.awt.event.KeyEvent evt) { jPanel1KeyReleased(evt); } }); jButton1.setText("back"); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jButton1MouseEntered(evt); } }); jButton1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jButton1KeyPressed(evt); } }); jButton2.setText("jButton2"); jButton2.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jButton2KeyPressed(evt); } }); jButton3.setText("jButton3"); jButton3.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jButton3KeyPressed(evt); } }); jButton4.setText("jButton4"); jButton4.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jButton4KeyPressed(evt); } }); jButton5.setText("jButton5"); jButton5.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jButton5.setFocusCycleRoot(true); jButton5.setFocusTraversalPolicyProvider(true); jButton5.setInheritsPopupMenu(true); jButton5.setNextFocusableComponent(jButton4); jButton5.setVerifyInputWhenFocusTarget(false); jButton5.requestFocusInWindow(); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jButton5.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jButton5KeyPressed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(41, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(38, 38, 38)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButton5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton1) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jButton5.getAccessibleContext().setAccessibleParent(this); add(jPanel1, new java.awt.GridBagConstraints()); //jButton1.requestFocusInWindow(); //NewJFrame.getRootPane().setDefaultButton(jButton1); //jButton1.requestFocus(); }// </editor-fold> private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } private void jPanel1KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: System.out.println("Key Pressed"); } private void jButton5KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: int key=evt.getKeyCode(); if(key==KeyEvent.VK_ESCAPE) { System.out.println("Escape Pressed"); jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } } private void jButton4KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: int key=evt.getKeyCode(); if(key==KeyEvent.VK_ESCAPE) { System.out.println("Escape Pressed"); jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } } private void jButton3KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: int key=evt.getKeyCode(); if(key==KeyEvent.VK_ESCAPE) { System.out.println("Escape Pressed"); jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } } private void jButton2KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: int key=evt.getKeyCode(); if(key==KeyEvent.VK_ESCAPE) { System.out.println("Escape Pressed"); jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } } private void jButton1KeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: int key=evt.getKeyCode(); if(key==KeyEvent.VK_ESCAPE||key==KeyEvent.VK_ENTER) { jPanel1.setVisible(false); NewJFrame.container.remove(NewJPanel1.this); NewJPanel p=new NewJPanel(); NewJFrame.container.add(p); } } private void jButton1MouseEntered(java.awt.event.MouseEvent evt) { // TODO add your handling code here: } private void formKeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here: System.out.println("key pressed"); } private void jPanel1KeyReleased(java.awt.event.KeyEvent evt) { // TODO add your handling code here: } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; public static javax.swing.JPanel jPanel1; // End of variables declaration
}
The reason that the focus button is capable is to move between the arrow buttons or the keyboard.