我在试着写一个聊天程序,在JTextArea上输入信息之后,按ctrl+enter组合键就调用别的方法发送出信息;我如何监听组合键被按下?JTextArea上又不能用ActionListener.
是应该用KeyListener吗?我试了半天没搞出来,请高手给出代码。

解决方案 »

  1.   

    这段代码能够实现public class Test {
        private boolean isPressed = false;
        public void show(){
            JFrame frame = new JFrame();        MyTableModel tableModel=new MyTableModel();
            JTable table=new JTable(tableModel);
            JTextArea text = new JTextArea(3,20);
            text.addKeyListener(new KeyAdapter(){
                public void keyPressed(KeyEvent e) {
                    if(KeyEvent.VK_CONTROL == e.getKeyCode()){
                        isPressed = true;
                    }
                    if(e.getKeyCode() == KeyEvent.VK_ENTER && isPressed){
                         JOptionPane.showMessageDialog(null,"Ctrl+Enter was pressed.");
                    }
                }
                public void keyReleased(KeyEvent e){
                    System.out.println(e.getKeyCode());
                    if(KeyEvent.VK_CONTROL == e.getKeyCode() || KeyEvent.VK_ENTER == e.getKeyCode()){
                        isPressed = false;
                    }
                }
            });
            frame.getContentPane().add(new JScrollPane(text));
            frame.setSize(300,400);
            frame.show();
        }
        public static void main(String[] args){
            Test test = new Test();
            test.show();
        }
    }