Java Swing - Verificar se tecla esta pressionada

Olá,

Alguem saberia como eu faço para numa aplicação swing, em dado momento verificar se o usuário esta com uma tecla pressionada (ctrl no caso)?
pesquisando na internet achei muita coisa relacionada a addKeyListener e KeyAdapter, mas nen é meu caso de fazer evento e tratar quando ele apertar, meu caso é de naquela hora ver se esta apertado e pronto…

porque preciso disso?

tenho um tanto de botão multi-selecionáveis, e to colocando uma pequena funcionalidade de quando o usuário só passar o mouse sobre ele (addMouseListener - MouseAdapter - mouseEntered… ), se o ctrl tiver apertado, ele já seleciona… só mesmo para poupar clique do usuário…

att

Só se você adicionar um listener é que poderá saber se a tecla está ou não pressionada…

poizé… mas será que é o único jeito?

porque na verdade na hora que tenho que verificar, já estou dentro de outro listener… o do mouseEnter… ai precisaria de um jeito só de verificar naquela hora mesmo, sem tratar como evento…

Um MouseEvent (que é o objeto recebido por vários métodos do MouseAdapter) é derivado de InputEvent, e um InputEvent tem métodos que permitem determinar se a tecla Ctrl, Shift ou Alt está pressionada.

Não se vai te ajudar, mas de uma pesquisada na Classe Robots

http://www.devmedia.com.br/utilizando-a-classe-robot-em-java/2363

package guj;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ExemploMouseEventComTeclaCtrl extends JFrame {
    private JLabel lblCliqueAqui;
    private JLabel lblATeclaShift;
    private JLabel lblATeclaCtrl;
    private JLabel lblATeclaAlt;

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

    /**
     * Create the frame.
     */
    public ExemploMouseEventComTeclaCtrl() {
        setBounds(100, 100, 450, 122);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        getContentPane().add(getLblCliqueAqui());
        getContentPane().add(getLblATeclaShift());
        getContentPane().add(getLblATeclaCtrl());
        getContentPane().add(getLblATeclaAlt());

    }

    private void showCtrlAltShiftKeys(MouseEvent e) {
        System.out.println(e);
        if (e.isAltDown())
            getLblATeclaAlt().setEnabled(true);
        else
            getLblATeclaAlt().setEnabled(false);
        if (e.isShiftDown())
            getLblATeclaShift().setEnabled(true);
        else
            getLblATeclaShift().setEnabled(false);
        if (e.isControlDown())
            getLblATeclaCtrl().setEnabled(true);
        else
            getLblATeclaCtrl().setEnabled(false);
    }

    private JLabel getLblCliqueAqui() {
        if (lblCliqueAqui == null) {
            lblCliqueAqui = new JLabel("Passe o mouse sobre este JLabel aqui...");
            lblCliqueAqui.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseEntered(MouseEvent e) {
                    showCtrlAltShiftKeys(e);
                }

                @Override
                public void mouseExited(MouseEvent e) {
                    showCtrlAltShiftKeys(e);
                }
            });
        }
        return lblCliqueAqui;
    }

    private JLabel getLblATeclaShift() {
        if (lblATeclaShift == null) {
            lblATeclaShift = new JLabel("A tecla Shift está pressionada");
            lblATeclaShift.setEnabled(false);
        }
        return lblATeclaShift;
    }

    private JLabel getLblATeclaCtrl() {
        if (lblATeclaCtrl == null) {
            lblATeclaCtrl = new JLabel("A tecla Ctrl está pressionada");
            lblATeclaCtrl.setEnabled(false);
        }
        return lblATeclaCtrl;
    }

    private JLabel getLblATeclaAlt() {
        if (lblATeclaAlt == null) {
            lblATeclaAlt = new JLabel("A tecla Alt está pressionada");
            lblATeclaAlt.setEnabled(false);
        }
        return lblATeclaAlt;
    }
}

Este exemplo só não é muito perfeito, porque quando você solta a tecla Shift, Ctrl ou Alt e o mouse está fora ou dentro do JLabel, o status não é atualizado (seria necessário também associar KeyListeners a essas teclas). Mas para o que você quer acho que está bom

É isso mesmo cara! valeu… o entanglement tinha acabado de postar a dica tambem… valeu pros dois ae… resolvido o prob