Duvida simples (Swing Java)(Resolvido)

Bom dia a todos, tenho uma duvida simples

Tenho uma tela de login, funcionando perfeitamente, a única coisa que eu não sei é, como fazer para que quando o usuario digitar username e senha, além do click no botão OK(que este está funcionando), ele possa ter uma segunda opção, teclando apenas Enter.

Quando clico com o mouse no OK, o login funciona perfeitamente, agora queria tbm deixar o Enter fazer a mesma coisa.

Meu código até agora:

package br.com.fjsistemas.view;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

public class Login extends JFrame {

	private static final long serialVersionUID = 5208765158631928204L;
	private JPanel contentPane;
	private JTextField txtLogin;
	private JPasswordField txtSenha;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Login frame = new Login();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Login() {
		setResizable(false);

		setTitle("Login FJSistemas");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 489, 373);
		setLocation(740,300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		setLocationRelativeTo(null);

		JPanel panel = new JPanel();
		panel.setBounds(0, 0, 480, 340);
		contentPane.add(panel);

		JLabel lblNewLabel = new JLabel("Usu\u00E1rio");
		lblNewLabel.setFont(new Font("Times New Roman", Font.BOLD, 12));
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);

		txtLogin = new JTextField();
		txtLogin.setColumns(10);

		JLabel lblNewLabel_1 = new JLabel("Senha");
		lblNewLabel_1.setFont(new Font("Times New Roman", Font.BOLD, 12));

		JButton btnNewButton = new JButton("Ok");
		btnNewButton.addActionListener(new ActionListener() {
			@SuppressWarnings("deprecation")
			public void actionPerformed(ActionEvent arg0) {
				if (txtLogin.getText().equals("athayde") && txtSenha.getText().equals("@a1s2d3.")) {

					JOptionPane.showMessageDialog(null, "Logado");
					
				} else {
					
					JOptionPane.showMessageDialog(null, "Usuário ou Senha inválidos!");
				}

			}

		});
		btnNewButton.setFont(new Font("Times New Roman", Font.BOLD, 12));

		txtSenha = new JPasswordField();

		JLabel lblNewLabel_2 = new JLabel("");
		lblNewLabel_2.setIcon(new ImageIcon(Login.class.getResource("/br/com/fjsistemas/imagens/LogoFJ.png")));
		GroupLayout gl_panel = new GroupLayout(panel);
		gl_panel.setHorizontalGroup(
			gl_panel.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_panel.createSequentialGroup()
					.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
						.addGroup(gl_panel.createSequentialGroup()
							.addContainerGap()
							.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE))
						.addGroup(gl_panel.createSequentialGroup()
							.addGap(93)
							.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING)
								.addGroup(gl_panel.createSequentialGroup()
									.addComponent(lblNewLabel_1)
									.addPreferredGap(ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
									.addComponent(txtSenha, GroupLayout.PREFERRED_SIZE, 216, GroupLayout.PREFERRED_SIZE))
								.addGroup(Alignment.LEADING, gl_panel.createSequentialGroup()
									.addComponent(lblNewLabel)
									.addPreferredGap(ComponentPlacement.UNRELATED)
									.addComponent(txtLogin, GroupLayout.DEFAULT_SIZE, 225, Short.MAX_VALUE)))))
					.addGap(111))
				.addGroup(gl_panel.createSequentialGroup()
					.addGap(30)
					.addComponent(lblNewLabel_2)
					.addContainerGap(34, Short.MAX_VALUE))
		);
		gl_panel.setVerticalGroup(
			gl_panel.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_panel.createSequentialGroup()
					.addGap(34)
					.addComponent(lblNewLabel_2)
					.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel)
						.addComponent(txtLogin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addGap(55)
					.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel_1)
						.addComponent(txtSenha, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
					.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
					.addComponent(btnNewButton)
					.addGap(38))
		);
		panel.setLayout(gl_panel);
	}
}

Obg!

Adicione um KeyListener ao campo que quiser que realize a ação e chame o mesmo método que está no botão. Fica melhor se você separar a verificação em outro método fora do KeyListener e do ActionListener. Exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class ExemploKeyL extends JFrame{

    JButton botao = new JButton("OK");
    JTextField campo = new JTextField();

    public ExemploKeyL() {
        setSize(500, 500);
        setLayout(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        campo.setBounds(50, 10, 200, 40);
        botao.setBounds(50, 60, 200, 40);

        getContentPane().add(campo);
        getContentPane().add(botao);

        botao.addActionListener(new ActionListener() {
            @SuppressWarnings("deprecation")
            public void actionPerformed(ActionEvent arg0) {
                verificarLogin();
            }
        });

        campo.addKeyListener(new java.awt.event.KeyAdapter(){
            public void keyPressed(java.awt.event.KeyEvent evt) {
               if (evt.getKeyCode() == KeyEvent.VK_ENTER){
                verificarLogin();
               }
            }
        });
    }

    private void verificarLogin(){
        //logica do login
        if (campo.getText().equals("WWW")){
            System.out.println("OK!");
        }else{
            System.out.println("NO!");
        }
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ExemploKeyL().setVisible(true);
            }
        });
    }
}

Referência: Java Listeners: ActionListener e KeyListener em Java - DevMedia

Abraço.

1 curtida

Muito Obrigado!!