Olá galera, fiz uma aplicação ak, com varias abas(painel) aba cliente, aba fornecedor, na aba cliente eu cadastro os cliente blz.
ja a aba fornecedor eu quero recuperar o cliente cadastrado sem usar botão, quero digitar o CNPJ e recuperar o dados dos clientes apenas com a tecla enter.
implemente um keylistener para o field onde vc quer executar a operaçao
L
lina
Oi,
ou então você poderia implementar o FocusListener no campo textfield utilizando
o método focusLost. Assim que o usuario terminar de digitar o CNPJ e mudar de campo,
seja ela com o mouse ou com a tecla tab do teclado, irá carregar as informações do usuário.
Tchauzin!
T
thingol
Isto é muito mais fácil. Pegue todos os componentes que precisam que o ENTER funcione como TAB, e chame este método sobre eles:
importjava.awt.AWTKeyStroke;importjava.awt.Component;importjava.awt.KeyboardFocusManager;importjava.awt.Rectangle;importjava.awt.event.KeyEvent;importjava.util.HashSet;importjava.util.Set;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.SwingUtilities;publicclassEnterComoTabextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJLabellblTexto1=null;privateJLabellblTexto2=null;privateJTextFieldtxtNome=null;privateJTextFieldtxtEndereco=null;privateJButtonbtnOK=null;/** * This is the default constructor */publicEnterComoTab(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.setTitle("JFrame");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){lblTexto2=newJLabel();lblTexto2.setBounds(newRectangle(15,60,59,14));lblTexto2.setText("Endereço");lblTexto1=newJLabel();lblTexto1.setBounds(newRectangle(15,15,63,14));lblTexto1.setText("Nome");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(lblTexto1,null);jContentPane.add(lblTexto2,null);jContentPane.add(getTxtNome(),null);jContentPane.add(getTxtEndereco(),null);jContentPane.add(getBtnOK(),null);}returnjContentPane;}/** * This method initializes txtNome * * @return javax.swing.JTextField */privateJTextFieldgetTxtNome(){if(txtNome==null){txtNome=newJTextField();txtNome.setBounds(newRectangle(90,15,181,31));considerarEnterComoTab(txtNome);// ####}returntxtNome;}/** * This method initializes txtEndereco * * @return javax.swing.JTextField */privateJTextFieldgetTxtEndereco(){if(txtEndereco==null){txtEndereco=newJTextField();txtEndereco.setBounds(newRectangle(90,60,181,31));considerarEnterComoTab(txtEndereco);// ####}returntxtEndereco;}/** * This method initializes btnOK * * @return javax.swing.JButton */privateJButtongetBtnOK(){if(btnOK==null){btnOK=newJButton();btnOK.setBounds(newRectangle(90,120,106,31));btnOK.setText("OK");btnOK.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){EnterComoTab.this.dispose();}});}returnbtnOK;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){EnterComoTabthisClass=newEnterComoTab();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * Este método faz com que o ENTER seja considerado como TAB, em componentes como * um JTextField. * @param comp O componente. */publicstaticvoidconsiderarEnterComoTab(Componentcomp){Set<AWTKeyStroke>keystrokes=comp.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);Set<AWTKeyStroke>newKeystrokes=newHashSet<AWTKeyStroke>(keystrokes);newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER,0));comp.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,newKeystrokes);}}
T
thingol1 like
Atualizei o exemplo para as seguintes coisas que são pedidas:
Se teclar ENTER sobre o botão OK, acionar o botão OK.
Se teclar ESC, fechar a janela.
Passar de um campo para outro com as setas para cima e para baixo.
importjava.awt.AWTKeyStroke;importjava.awt.Component;importjava.awt.KeyboardFocusManager;importjava.awt.Rectangle;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.InputEvent;importjava.awt.event.KeyEvent;importjava.util.HashSet;importjava.util.Set;importjavax.swing.JButton;importjavax.swing.JComponent;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.KeyStroke;importjavax.swing.SwingUtilities;publicclassEnterComoTabextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJLabellblTexto1=null;privateJLabellblTexto2=null;privateJTextFieldtxtNome=null;privateJTextFieldtxtEndereco=null;privateJButtonbtnOK=null;/** * This is the default constructor */publicEnterComoTab(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.getRootPane().setDefaultButton(btnOK);// Se teclarmos OK neste// botão...// Se teclarmos ESC nesta janela, ela irá se fechar:this.getRootPane().registerKeyboardAction(newActionListener(){publicvoidactionPerformed(ActionEvente){EnterComoTab.this.dispose();}},KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0),JComponent.WHEN_IN_FOCUSED_WINDOW);this.setTitle("JFrame");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){lblTexto2=newJLabel();lblTexto2.setBounds(newRectangle(15,60,59,14));lblTexto2.setText("Endereço");lblTexto1=newJLabel();lblTexto1.setBounds(newRectangle(15,15,63,14));lblTexto1.setText("Nome");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(lblTexto1,null);jContentPane.add(lblTexto2,null);jContentPane.add(getTxtNome(),null);jContentPane.add(getTxtEndereco(),null);jContentPane.add(getBtnOK(),null);}returnjContentPane;}/** * This method initializes txtNome * * @return javax.swing.JTextField */privateJTextFieldgetTxtNome(){if(txtNome==null){txtNome=newJTextField();txtNome.setBounds(newRectangle(90,15,181,31));considerarEnterComoTab(txtNome);// ####}returntxtNome;}/** * This method initializes txtEndereco * * @return javax.swing.JTextField */privateJTextFieldgetTxtEndereco(){if(txtEndereco==null){txtEndereco=newJTextField();txtEndereco.setBounds(newRectangle(90,60,181,31));considerarEnterComoTab(txtEndereco);// ####}returntxtEndereco;}/** * This method initializes btnOK * * @return javax.swing.JButton */privateJButtongetBtnOK(){if(btnOK==null){btnOK=newJButton();btnOK.setBounds(newRectangle(90,120,106,31));btnOK.setText("OK");considerarSetaComoTab(btnOK);btnOK.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){EnterComoTab.this.dispose();}});}returnbtnOK;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){EnterComoTabthisClass=newEnterComoTab();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * Este método faz com que o ENTER seja considerado como TAB, em componentes * como um JTextField. Além disso, permite a navegação com as setas para * cima e para baixo. * * @param comp * O componente. */publicstaticvoidconsiderarEnterComoTab(Componentcomp){Set<AWTKeyStroke>newKeystrokes;newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DOWN,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_DOWN,0));comp.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,newKeystrokes);newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER,InputEvent.SHIFT_DOWN_MASK));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_UP,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_UP,0));comp.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,newKeystrokes);}/** * Este método faz com que as setas sejam consideradas como TAB, e deve ser * usado em um botão qualquer. * * @param comp * O componente. */publicstaticvoidconsiderarSetaComoTab(JButtoncomp){Set<AWTKeyStroke>newKeystrokes;newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DOWN,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_DOWN,0));comp.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,newKeystrokes);newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_UP,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_UP,0));comp.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,newKeystrokes);}}
E
evertonmagnus
thingol:
Atualizei o exemplo para as seguintes coisas que são pedidas:
- Se teclar ENTER sobre o botão OK, acionar o botão OK.
- Se teclar ESC, fechar a janela.
- Passar de um campo para outro com as setas para cima e para baixo.
importjava.awt.AWTKeyStroke;importjava.awt.Component;importjava.awt.KeyboardFocusManager;importjava.awt.Rectangle;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.InputEvent;importjava.awt.event.KeyEvent;importjava.util.HashSet;importjava.util.Set;importjavax.swing.JButton;importjavax.swing.JComponent;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.KeyStroke;importjavax.swing.SwingUtilities;publicclassEnterComoTabextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJLabellblTexto1=null;privateJLabellblTexto2=null;privateJTextFieldtxtNome=null;privateJTextFieldtxtEndereco=null;privateJButtonbtnOK=null;/** * This is the default constructor */publicEnterComoTab(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.getRootPane().setDefaultButton(btnOK);// Se teclarmos OK neste// botão...// Se teclarmos ESC nesta janela, ela irá se fechar:this.getRootPane().registerKeyboardAction(newActionListener(){publicvoidactionPerformed(ActionEvente){EnterComoTab.this.dispose();}},KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0),JComponent.WHEN_IN_FOCUSED_WINDOW);this.setTitle("JFrame");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){lblTexto2=newJLabel();lblTexto2.setBounds(newRectangle(15,60,59,14));lblTexto2.setText("Endereço");lblTexto1=newJLabel();lblTexto1.setBounds(newRectangle(15,15,63,14));lblTexto1.setText("Nome");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(lblTexto1,null);jContentPane.add(lblTexto2,null);jContentPane.add(getTxtNome(),null);jContentPane.add(getTxtEndereco(),null);jContentPane.add(getBtnOK(),null);}returnjContentPane;}/** * This method initializes txtNome * * @return javax.swing.JTextField */privateJTextFieldgetTxtNome(){if(txtNome==null){txtNome=newJTextField();txtNome.setBounds(newRectangle(90,15,181,31));considerarEnterComoTab(txtNome);// ####}returntxtNome;}/** * This method initializes txtEndereco * * @return javax.swing.JTextField */privateJTextFieldgetTxtEndereco(){if(txtEndereco==null){txtEndereco=newJTextField();txtEndereco.setBounds(newRectangle(90,60,181,31));considerarEnterComoTab(txtEndereco);// ####}returntxtEndereco;}/** * This method initializes btnOK * * @return javax.swing.JButton */privateJButtongetBtnOK(){if(btnOK==null){btnOK=newJButton();btnOK.setBounds(newRectangle(90,120,106,31));btnOK.setText("OK");considerarSetaComoTab(btnOK);btnOK.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){EnterComoTab.this.dispose();}});}returnbtnOK;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){EnterComoTabthisClass=newEnterComoTab();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * Este método faz com que o ENTER seja considerado como TAB, em componentes * como um JTextField. Além disso, permite a navegação com as setas para * cima e para baixo. * * @param comp * O componente. */publicstaticvoidconsiderarEnterComoTab(Componentcomp){Set<AWTKeyStroke>newKeystrokes;newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DOWN,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_DOWN,0));comp.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,newKeystrokes);newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER,InputEvent.SHIFT_DOWN_MASK));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_UP,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_UP,0));comp.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,newKeystrokes);}/** * Este método faz com que as setas sejam consideradas como TAB, e deve ser * usado em um botão qualquer. * * @param comp * O componente. */publicstaticvoidconsiderarSetaComoTab(JButtoncomp){Set<AWTKeyStroke>newKeystrokes;newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DOWN,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_DOWN,0));comp.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,newKeystrokes);newKeystrokes=newHashSet<AWTKeyStroke>(comp.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_UP,0));newKeystrokes.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_KP_UP,0));comp.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,newKeystrokes);}}
thingol, por favor me salve, ainda coloco o considerarEnterComoTab(txtNome), o meu projeto ja ta pronto, aonde adiciono o codigo e no botão como fazer e ele passaé o codigo.