Setfocus

7 respostas
D

Como eu faco para um JTextField mudar o foco de um para o outro apertando enter ?

7 Respostas

massardi

Bom isso ja foi falado aqui, mas eu não consegui achar o link, então vou passar a solução que eu inclusive pequei daqui mesmo, acho que esta igual ou parecido, mais funciona.

class nome_da_classe implements KeyListener{

seu codigo

//metodo que vai trocar o focus
	public void keyPressed (KeyEvent ke){
	      if (ke.getKeyCode() == ke.VK_ENTER) { 

	      Component c = ke.getComponent(); 
    	  c.transferFocus(); 
          c = null; 

		}
	}
   public void keyTyped(KeyEvent ke) 
   {       
   } 

   public void keyReleased(KeyEvent ke) 
   { 
   }

Não esqueca de colocar todos os seus componentes que voce quer que faca a troca de focus no addKeyListener. Exemplo...

nome_do_bottao.addKeyListener(this);
nome_do_campo.addKeyListener(this);
...

Espero ter ajudado

D

nome_do_bottao.addKeyListener(this);
nome_do_campo.addKeyListener(this);

ixi… deu erro no codigo acima.
Parece que o JtextField nao aceita o ponteir (this).
Fala que nao da suporte a esse metodo…

Paulo_Silveira

deu erro pq era apenas um exemplo que o massardi deu

le aceita qquer referencia, inclusive o THIS, desde que voce seja um LISTENER
sua classe precisa ser o proprio lsitener se vc quer passar this

D
package pagina;

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

public class Applet1 extends Applet {
  private boolean isStandalone = false;
  JToggleButton btLogar = new JToggleButton();
  JTextField edSenha = new JTextField();
  JTextField edLogin = new JTextField();
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JLabel jLabel3 = new JLabel();
   //Get a parameter value
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  //Construct the applet
  public Applet1() {
  }
  //Initialize the applet
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception {
    btLogar.setBackground(SystemColor.desktop);
    btLogar.setOpaque(false);
    btLogar.setText("Logar");
    btLogar.setBounds(new Rectangle(158, 195, 65, 19));
    btLogar.addActionListener(new Applet1_btLogar_actionAdapter(this));
    this.setLayout(null);
    edSenha.setOpaque(false);
    edSenha.setBounds(new Rectangle(153, 135, 83, 20));
    edLogin.setOpaque(false);
    edLogin.setText("");
    edLogin.setBounds(new Rectangle(153, 108, 83, 20));
    jLabel1.setText("Login");
    jLabel1.setBounds(new Rectangle(106, 107, 57, 18));
    jLabel2.setText("Senha");
    jLabel2.setBounds(new Rectangle(104, 137, 44, 14));
    jLabel3.setFont(new java.awt.Font("Serif", 1, 30));
    jLabel3.setText("ACESSO EXCLUSIVO");
    jLabel3.setBounds(new Rectangle(52, 28, 307, 26));
    this.setBackground(SystemColor.textHighlight);
    this.add(jLabel1, null);
    this.add(edLogin, null);
    this.add(edSenha, null);
    this.add(jLabel2, null);
    this.add(btLogar, null);
    this.add(jLabel3, null);
  }
  //Get Applet information
  public String getAppletInfo() {
    return "Applet Information";
  }
  //Get parameter info
  public String[][] getParameterInfo() {
    return null;
  }

  void btLogar_actionPerformed(ActionEvent e) {

  }
}

class Applet1_btLogar_actionAdapter implements java.awt.event.ActionListener {
  Applet1 adaptee;

  Applet1_btLogar_actionAdapter(Applet1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.btLogar_actionPerformed(e);
  }
}

meu codigo eh o acima…
So quero fazer o focus do teclado mudar quando aperto enter.
no delphi eu faco assim
no on key press.

if key = # 13 then
edSenha.setfocus;

Agora no Java eh como ?

Paulo_Silveira

da uma olhada no tutorial da sun, sobre listeners e eventos, d pacote java.awt
eh parecido com o do delhpi

D

blz.

K

MyJTextField.requestFocus();

Criado 31 de janeiro de 2003
Ultima resposta 30 de jul. de 2008
Respostas 7
Participantes 4