Key Event com Enter

2 respostas
H

Pessoal como eu faço para arrumar esse problema?

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Main extends JFrame {

    public Main() throws HeadlessException {
        setSize(200, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setLocationRelativeTo(null);

        JLabel lbl = new JLabel("Pressione Enter: ");
        JTextField jtext = new JTextField();
        jtext.setPreferredSize(new Dimension(100, 20));
        add(lbl);
        add(jtext);

        jtext.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {

                if (e.getKeyCode() == 10) {
                    JOptionPane.showMessageDialog(null, "Pressione Enter Novamente Para Fechar");
                }
            }

            public void keyTyped(KeyEvent e) {
            }

            public void keyPressed(KeyEvent e) {
            }
        });
    }

    public static void main(String[] args) {
        new Main().setVisible(true);
    }
}

pois se eu aperto ENTER ele fica em um "LOOP INFINITO"

2 Respostas

L

Acho que o problema é que o listener é ativado toda vez que você clica enter, ainda que o foco não esteja no jtext. Fica parecendo um loop, mas, na realidade, a segunda vez que você clica no enter é tratado como um novo evento disparando o seu listener da jtext novamente.

H

Sim, é isso mesmo, dessa forma não consigo resolver o problema rss

para resolver acabei criando um JDIALOG com um botão e instancio o Keypress ENTER para o usuário pressionar o enter e fechar esse JDIALOG, resolvendo assim o problema

Abraços

Criado 25 de setembro de 2015
Ultima resposta 2 de out. de 2015
Respostas 2
Participantes 2