Pessoal queria dar foco em um JTextField que está em um JInternalFrame, tentei com txtUsuario.requestFocus(); e nao deu
Tente:
txtUsuario.setFocusable(true);
txtUsuario.requestFocusInWindow();
Olá marcos, nenhum dos dois funcionaram!!!
Oi cara!!!
Velho eu estava com o mesmo problema que você!!!
Resolvi o meu desta forma.
seuTextField.grabFocus();
Vê se consegue com este!!!
Abraços!!
Pior que nao deu will!
Posta seu codigo aqui então para vermos o que esta pegando!!
Abraços!
Esse é o codigo, está num JInternalFrame e queria que quando abrisse ele o foco estivesse no primeiro campo, txtUsuario, só nao repara a bagunça
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Mauricio de Souza
*/
public class janelaAlteraUsuario extends JInternalFrame implements ActionListener, KeyListener{
JLabel lblid = new JLabel("ID:");
JLabel lblUsuario = new JLabel("Usuário:");
JLabel lblSenha = new JLabel("Nova Senha:");
JLabel lblRepeteSenha = new JLabel("Repita a Senha:");
JTextField txtid = new JTextField();
JTextField txtUsuario = new JTextField();
JPasswordField txtSenha = new JPasswordField();
JPasswordField txtRepeteSenha = new JPasswordField();
JButton cmdOk = new JButton("OK");
JButton cmdSair = new JButton("Sair");
public janelaAlteraUsuario() {
setSize(260,220);
setTitle(".:: Alterar Usuário e Senha ::.");
setLayout(null);
setDefaultCloseOperation(2);
lblid.setBounds(87,20,30,20);
add(lblid);
txtid.setBounds(105,20,20,20);
add(txtid);
txtid.setEditable(false);
lblUsuario.setBounds(53,50,80,20);
add(lblUsuario);
txtUsuario.setBounds(105,50,100,20);
add(txtUsuario);
lblSenha.setBounds(30,80,100,20);
add(lblSenha);
txtSenha.setBounds(105,80,100,20);
add(txtSenha);
lblRepeteSenha.setBounds(10,110,100,20);
add(lblRepeteSenha);
txtRepeteSenha.setBounds(105,110,100,20);
add(txtRepeteSenha);
cmdOk.setBounds(40,150,80,20);
add(cmdOk);
cmdOk.addActionListener(this);
cmdSair.setBounds(130,150,80,20);
add(cmdSair);
cmdSair.addActionListener(this);
txtUsuario.setText(janelaLogaAlterarUsuario.txtUsuario.getText());
txtSenha.setText(janelaLogaAlterarUsuario.txtSenha.getText());
txtUsuario.addKeyListener(this);
txtSenha.addKeyListener(this);
txtRepeteSenha.addKeyListener(this);
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/botelho", "root", "12345");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from usuarios where usuario='" + txtUsuario.getText() + "' and senha='" + txtSenha.getText() + "'" );
if(rs.next()){
String id= rs.getString("id");
txtid.setText(id);
}else{
JOptionPane.showMessageDialog(null, "Login não encontrado!!");
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Erro na comunicação com o banco de Dados","Erro",JOptionPane.ERROR_MESSAGE);
}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == cmdSair){
this.dispose();
}
if(e.getSource() == cmdOk){
if(txtUsuario.getText().length() != 0 && txtUsuario.getText().length() > 5 ){
if(txtSenha.getText().length() > 5){
if(txtSenha.getText().equals(txtRepeteSenha.getText())){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/botelho", "root", "12345");
Statement stmt = con.createStatement();
int r = stmt.executeUpdate("update usuarios set usuario='" + txtUsuario.getText() + "', senha='" + txtSenha.getText() + "' where id='" + txtid.getText() + "'");
if(r==1){
JOptionPane.showMessageDialog(null, "Usuário Alterado com Sucesso!");
this.dispose();
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null, ex.toString());
}
}else{JOptionPane.showMessageDialog(null, "Os campos SENHA e REPITA A SENHA devem ser iguais!");}
}else{JOptionPane.showMessageDialog(null, "O campo SENHA deve ter no mínimo 6 dígitos!");}
}else{JOptionPane.showMessageDialog(null, "O campo USUÁRIO deve ter no mínimo 6 dígitos!");}
}
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
int tecla=e.getKeyCode();
if(tecla == KeyEvent.VK_ENTER){
if(txtUsuario.getText().length() != 0 && txtUsuario.getText().length() > 5 ){
if(txtSenha.getText().length() > 5){
if(txtSenha.getText().equals(txtRepeteSenha.getText())){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/botelho", "root", "12345");
Statement stmt = con.createStatement();
int r = stmt.executeUpdate("update usuarios set usuario='" + txtUsuario.getText() + "', senha='" + txtSenha.getText() + "' where id='" + txtid.getText() + "'");
if(r==1){
JOptionPane.showMessageDialog(null, "Usuário Alterado com Sucesso!");
this.dispose();
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null, ex.toString());
}
}else{JOptionPane.showMessageDialog(null, "Os campos SENHA e REPITA A SENHA devem ser iguais!");}
}else{JOptionPane.showMessageDialog(null, "O campo SENHA deve ter no mínimo 6 dígitos!");}
}else{JOptionPane.showMessageDialog(null, "O campo USUÁRIO deve ter no mínimo 6 dígitos!");}
}
}
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}}
Cara quando vc colocar o grabFocus(); não esta indo?!!
txtUsuario.setBounds(105,50,100,20);
add(txtUsuario);
txtUsuario.grabFocus();
Quando eu estava com este problema resolvi desta forma!!!
Foi isso que vc fez e não rolou?!!
abraços!!
Pior que não , não consegui de maneira alguma!
Cara Desculpe a demora!!
Então eu não sei se vc conseguiu, mas tente fazer desta forma!
final JTextField seutextfield = seuJTextField;
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
seutextfield.requestFocusInWindow();
}
});
Espero que de certo agora, abraços!!!
[quote=willricardo]Cara Desculpe a demora!!
Então eu não sei se vc conseguiu, mas tente fazer desta forma!
final JTextField seutextfield = seuJTextField;
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
seutextfield.requestFocusInWindow();
}
});
Espero que de certo agora, abraços!!![/quote]
É isso mesmo. Provavelmente dará certo. Isso ocorre pois o requestFocus(), antes, era chamado no construtor e ao usar o método setVisible(true) de JFrame, quem ganhava o foco era a janela. Com isso, o método requestFocus será chamado depois da janela estar pronto (por isso do invke later).
Ainda não consegui! Formatei o micro e estou instalando uma porrada de programas, até amanhã vejo se dá certo will, valeu por enquanto!