Capturar delete

4 respostas
M

Buenas!

pessoal é o seguinte, estou desenvolvendo um aplicativo que deve poder jogar elementos em um panel, movimenta-los e apaga-los.
Estava tudo indo certo até agora…
Meu problema é, tenho um jpanel dentro de um jframe, gostaria de saber como capturar quando a tecla delete for pressionada. Pode ser tanto no jframe ou no jpanel, tanto faz, só preciso de uma luz de como capturar essa tecla.
Já tentei por KeyPressed e por outras formas que vi na net mas não deu em nada.

até +

4 Respostas

J

mss:
Buenas!

pessoal é o seguinte, estou desenvolvendo um aplicativo que deve poder jogar elementos em um panel, movimenta-los e apaga-los.
Estava tudo indo certo até agora…
Meu problema é, tenho um jpanel dentro de um jframe, gostaria de saber como capturar quando a tecla delete for pressionada. Pode ser tanto no jframe ou no jpanel, tanto faz, só preciso de uma luz de como capturar essa tecla.
Já tentei por KeyPressed e por outras formas que vi na net mas não deu em nada.

até +


Coloca um listener no JPane para ouvir teclas:

meuJPane.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_DELETE){ System.out.println("Pressionou delete"); } } });

M

javer, eu testei isto, funciona até o momento em que eu jogo algum componente na tela,
se eu adicionar por ex, um JButton no meu panel com um action do mouse tudo para de funcionar.

meuJPane.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyPressed(java.awt.event.KeyEvent evt) {
	if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_DELETE){
	    System.out.println("Pressionou delete");
	}                
    }
});

JButton botao = new JButton("teste");
botao.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                System.out.println("Mouse clicked");
            }
        });
meuJPane.add(botao);

alguma dica?

abraço

W

eu sempre fiz assim sempre funcionou

@Override
    protected JRootPane createRootPane() {
        JRootPane rootPane = new JRootPane();
        KeyStroke strokeF10 = KeyStroke.getKeyStroke("F10");

        Action actionF10 = new AbstractAction() {

            public void actionPerformed(ActionEvent actionEvent) {
                //seu codigo
            }
        };

      
        InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        inputMap.put(strokeF10, "F10");
        rootPane.getActionMap().put("F10", actionF10);
       
        return rootPane;
    }

ai vc troca do F10 para DELETE

M
worldfernando:
eu sempre fiz assim sempre funcionou
@Override
    protected JRootPane createRootPane() {
        JRootPane rootPane = new JRootPane();
        KeyStroke strokeF10 = KeyStroke.getKeyStroke("F10");

        Action actionF10 = new AbstractAction() {

            public void actionPerformed(ActionEvent actionEvent) {
                //seu codigo
            }
        };

      
        InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        inputMap.put(strokeF10, "F10");
        rootPane.getActionMap().put("F10", actionF10);
       
        return rootPane;
    }

ai vc troca do F10 para DELETE

Era exatamente isto que eu estava procurando...
foi só substituir/sobrescrever o createRootPane no meu JFrame que funcionou blz

Obrigado pessoal

Abraço!

Criado 25 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 4
Participantes 3