Gostaria de saber como eu faço para quando apertar a tecla “ESC” fechar a janela
Você precisa adicionar um keyListener a seu Componente.
:arrow: http://www.javaalmanac.com/egs/java.awt.event/KeyEvents.html
No evento basta executar o doDefaultClosedAction(); ou dispose();
valeu? até… :thumbup:
Já teve uma pergunta pareceida aqui no fórum esse mês, só que não sei exatamente onde está o tópico. Tudo bem, não tem problema.
O que o GUI falou está perfeito, mais vai aí um jeito simples.
Faça o seguinte:
public class teclaESC extends JFrame implements KeyListener
{
//No construtor defina que o componente está escutando
//algo do teclado
public teclaESC()
{
super("ESC - EXEMPLO");
this.addKeyListener(this);
}
public void keyTyped(KeyEvent ke){}
public void keyPressed(KeyEvent ke){}
public void keyReleased(KeyEvent ke)
{
if ( ke.getKeyCode() == KeyEvent.VK_ESCAPE )
System.exit(0);
}
}
Ok, Valeu galera.
Abraços
Olá, para você não precisar fazer uma adição de listeners em todos os frames, basta criar um tema ou mesmo um look and feel e setar os keybindings e keymaps apropriados.
[]´s
Não consegui fazer dessa forma, e além disso o action performed do meu JFrame também não está funcionando creio que há uma relação entre os dois problemas. O JFrame não está escutando os eventos.
[code]public class Login extends JFrame implements ActionListener, KeyListener{
public Login
{
super(“ESC - EXEMPLO”);
this.addKeyListener(this);
}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ESCAPE )
quit();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btnOk)
{
entrar();
}
else if(e.getSource() == btnCancel)
{
quit();
}
}
}[/code]
Poxa, tb está errado, ele não escuta o ActionListener, pq não tem nada que esteja escutando, só tem o KEYLISTENER.
Pelo que percebi tem dois botões.
Então faça o seguinte:
btnOk.addActionListener(this);
btnCancel.addActionListener(this);
E está faltando a implementação dos métodos quit(), entrar().
Está faltando a criação dos botões, do painel ou container.
Se precisar de mais ajuda, coloque o código completo para nós termos noção do que realmente está acontecendo e assim poderemos te ajudar com mais clareza.
Abraços 8)
[code]import java.awt.;
import java.awt.event.;
import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import javax.swing.;
import javax.swing.text.MaskFormatter;
import java.util.Date;
import IO.;
import Sistema.Funcoes;
import Sistema.Validacoes;
public class Login extends JFrame implements ActionListener, KeyListener
{
Color color = new Color(29,140,194);
Container c;
static Date data=new Date();
static int resolucaoHeight=600, resolucaoWidth=800;
static JMenuBar menuBar;
static JDesktopPane desktop = new JDesktopPane();
static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
panelLogin pnlLogin=new panelLogin();
JTextField txtNumero;
JPasswordField txtSenha;
JComboBox cboNome;
JButton btnOk, btnCancel;
JLabel lblData,lblUsuario,lblSenha;
JFormattedTextField txtData;
static int usuNumero;
static String usuSenha, usuNome;
public Login()
{
super("Título");
if ((screenSize.getWidth()<800)||(screenSize.getHeight()<600))
{
JOptionPane.showMessageDialog(null,"Resolução mínima requerida: 800x600","Lion",1);
System.out.println("Resolução mínima requerida: 800x600");
dispose();
System.exit(0);
}
setBounds ((((screenSize.width)/2)-(resolucaoWidth/2)), (((screenSize.height)/2)-(resolucaoHeight/2)), 800, 600);
buildContent();
buildTela();
//this.addKeyListener(this);
//this.actionPerformed(this);
this.setResizable(false);
this.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{quit();}});
this.getRootPane().getInputMap(panelLogin.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "fecharJanela");
this.getRootPane().getActionMap().put("fecharJanela", new AbstractAction("fecharJanela")
{public void actionPerformed(ActionEvent evt)
{
quit();
}
});
System.out.println("Iniciando Tela de Login");
show();
limparTela();
// Faz a conecção
Banco.getConnection();
}
protected void buildContent()
{
getContentPane().add(desktop);
desktop.setBackground(color);
}
protected void buildTela()
{
txtNumero=new JTextField("");
txtSenha=new JPasswordField("");
cboNome=new JComboBox();
btnOk=new JButton("Ok");
btnCancel=new JButton("Cancelar");
lblData=new JLabel("Data");
lblSenha=new JLabel("Senha");
lblUsuario=new JLabel("Usuário");
try
{
MaskFormatter mascara = new MaskFormatter("##/##/####");
txtData=new JFormattedTextField(mascara);
}
catch (ParseException e)
{System.out.println(e);}
//Label
lblData.setBounds(290,300,100,20);
getContentPane().add(lblData);
lblSenha.setBounds(290,350,100,20);
getContentPane().add(lblSenha);
lblUsuario.setBounds(290,325,100,20);
getContentPane().add(lblUsuario);
//Textfield e PasswordField
txtData.setBounds(340,300,70,20);
getContentPane().add(txtData);
Validacoes.validaData(txtData,lblData.getText());
txtNumero.setBounds(340,325,50,20);
txtNumero.setHorizontalAlignment(SwingConstants.RIGHT);
getContentPane().add(txtNumero);
txtNumero.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == (KeyEvent.VK_ENTER)) {
if (txtNumero.getText().equals("")==true)
{
txtNumero.nextFocus();
}
else
{
if (buscaFuncionario()==true)
{txtSenha.requestFocus();}
else{limparTela();}
}
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {
//e.setKeyChar(e.toString().toUpperCase().toCharArray()[e.getKeyLocation()]);
}
});
txtSenha.setBounds(340,350,170,20);
getContentPane().add(txtSenha);
txtSenha.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == (KeyEvent.VK_ENTER))
{
entrar();
}
}
public void keyReleased(KeyEvent arg0){}
public void keyTyped(KeyEvent arg0){
}});
//ComboBox
cboNome.setBounds(390,325,120,20);
cboNome.setBackground(Color.white);
getContentPane().add(cboNome);
//Button
btnOk.setBounds((((this.getWidth())/2)-110),400,110,20);
btnOk.setMnemonic(KeyEvent.VK_O);
btnOk.addKeyListener(new KeyListener()
{public void keyPressed(KeyEvent e){entrar();}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
});
getContentPane().add(btnOk);
btnCancel.setBounds((((this.getWidth())/2)),400,110,20);
btnCancel.setMnemonic(KeyEvent.VK_C);
btnCancel.addKeyListener(new KeyListener()
{public void keyPressed(KeyEvent e){quit();}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
});
getContentPane().add(btnCancel);
pnlLogin.setBackground(Color.WHITE);
getContentPane().add(pnlLogin);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btnOk)
{
entrar();
}
else if(e.getSource() == btnCancel)
{
quit();
}
}
//Metodo para sair
public void quit()
{
System.out.println("Fechando Tela de Login");
Banco.closeConnection();
System.exit(0);
}
public void entrar()
{
if (txtSenha.getText().equals(usuSenha)==true)
{
this.hide();
new MenuFrame(this);
}
limparTela();
}
private boolean buscaFuncionario()
{
boolean encontrado=false;
try
{
cboNome.removeAllItems();
ResultSet rs = Banco.Select("Usuarios","Cod_Usuario, usuNome, usuSenha, usuSalario, Cod_Profissao"," WHERE Cod_Usuario="+txtNumero.getText()+" ORDER BY usuNome");
encontrado=true;
while(!rs.isAfterLast())
{
cboNome.addItem(rs.getString("usuNome"));
usuNome=rs.getString("usuNome");
usuNumero=rs.getInt("Cod_Usuario");
usuSenha=rs.getString("usuSenha");
rs.next();
}
}
catch(SQLException e)
{
encontrado=false;
System.out.println(e);
}
return encontrado;
}
private void limparTela()
{
txtNumero.setText("");
txtSenha.setText("");
cboNome.removeAllItems();
txtData.setText(Funcoes.formatDataNormal(data));
txtData.requestFocus();
txtData.selectAll();
}
public static void main(String[] args)
{
new Login();
}
public void keyPressed(KeyEvent arg0) {}
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ESCAPE )
{
quit();
}
}
public void keyTyped(KeyEvent e)
{}
}
class panelLogin extends JPanel
{
Image img;
URL url=getClass().getResource("/Picture/Login.jpg");
panelLogin()
{
updateUI();
}
public void paint(Graphics g)
{
g.setColor(Color.WHITE);
g.fillRect(this.getX(),this.getY(),this.getWidth()-1,this.getHeight()-1);
if (url==null)
{
url=getClass().getResource("/Picture/Login.jpg");
}
else
{
img=new ImageIcon(url).getImage();
g.drawImage(img,((this.getWidth()/2)-(img.getWidth(this)/2)),this.getY()+100,this);
}
}
}[/code]