键盘事件 首先会有一个 event e (废话)
然后 e.getKeyChar() 会知道 你按下的是 v 还是 c
再然后 e.getModifiers() 会告诉你 是
KeyEvent.ALT_MASK
         CTRL_MASK
         SHIFT_MASK
         etc.明白?

解决方案 »

  1.   

    首先我的视图extends JComponent
    然后在构建器中    MouseHandler handler = new MouseHandler();         // Create the mouse       addMouseListener(handler);                         // Listen for button events
        addMouseMotionListener(handler);                   // Listen for motion events    KeyHandler listener = new KeyHandler();
        addKeyListener(listener);//加入鼠标和键盘的监听器class KeyHandler implements KeyListener
       {
          public void keyPressed(KeyEvent event)
          {
             int keyCode = event.getKeyCode();         System.out.println(keyCode);
          }
    //另外两个
       }同样的加入鼠标的
    执行结果:
    鼠标的执行正常。键盘的就不执行!
    呵呵!怎么搞的呀!
      

  2.   

    而去这个东东也加上了!
    public boolean isFocusTraversable()
       {
          return true;
       }
      

  3.   

    怎么搞的,他就是不去执行找个
    keyPressed事件

    但mouse中的事件全都可以执行!hh !
      

  4.   

    JTextField txt1;
       ...
       txt1.addKeyListener(new KeyAdapter(){
          public void keyPressed(KeyEvent e){        if ((e.getKeyCode()==KeyEvent.VK_V) &&
                ((e.getModifiers()&KeyEvent.CTRL_MASK)==KeyEvent.CTRL_MASK))
            {
                System.out.println("you press ctrl+v");
                ...
            }
       }
      

  5.   

    俺得意思是:
    class SketchView extends JComponent implements Observer, Constants,this.addKeyListener(*&**)她怎么压根就不执行这里呀!
      

  6.   

    确实是这样 因为你用的只是一个 JComponent
    应该用一个较为具体的组件 比如 JButton
      

  7.   

    那我非要用JComponent那有没有别的方法!
      

  8.   

    但是这个我继承字JComponent但她执行正确!
    代码如下:
    /**
       @version 1.30 2000-06-03
       @author Cay Horstmann
    */import java.awt.*;
    import java.awt.geom.*;
    import java.util.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;public class Sketch
    {  
       public static void main(String[] args)
       {  
          SketchFrame frame = new SketchFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.show();
       }
    }/**
       A frame with a panel for sketching a figure
    */
    class SketchFrame extends JFrame
    {
       public SketchFrame()
       {
          setTitle("Sketch");
          setSize(WIDTH, HEIGHT);      // add panel to frame      SketchPanel panel = new SketchPanel();
          Container contentPane = getContentPane();
          contentPane.add(panel);
       }   public static final int WIDTH = 300;
       public static final int HEIGHT = 200;  
    }/**
       A panel for sketching with the keyboard.
    */
    class SketchPanel extends JComponent

       public SketchPanel()
       {  
          KeyHandler listener = new KeyHandler();
          addKeyListener(listener);
       }   public boolean isFocusTraversable()
       {  
          return true; // allow panel to get input focus
       }
       private class KeyHandler implements KeyListener
       {  
          public void keyPressed(KeyEvent event)
          {  
             int keyCode = event.getKeyCode();
             System.out.println(keyCode);
             // set distance
          }      public void keyReleased(KeyEvent event) {}      public void keyTyped(KeyEvent event)
          {  
             char keyChar = event.getKeyChar();
             
       }
    }
    }另外我得Frame里有一些抽象按钮!有没有影响!
      

  9.   

    我用同样得方式!将键盘事件!写进MVC构建得绘图程序中!
    键盘事件就不执行!
      

  10.   

    JButton也继承自JComponent怎么会不行呢!
    他的确室可以得!
    但为什么不调用呢!
      

  11.   

    我也碰到过类似的情况,好像是因为你的JComponent没有得到focus,isFocusTraversable只是表明通过tab键可以将焦点切到这个控件,至于是否真的得到还不一定,你可以在你的视图中重载getOwner(好像是),然后返回this试试看。
      

  12.   

    应该还是焦点没有获取!
    在Frame中!
    //getContentPane().add(toolBar, BorderLayout.NORTH);
    还有加入视图的语句!
    如果去掉toolBar,只加视图就运行正常,但是两个都加!则不能运行键盘事件!
    应该还是焦点的问题?
    帮帮忙?
      

  13.   

    就是在一个Frame中加入了JComponent(内有键盘事件),和3个JToolBar
    如果不加JToolBar(只有JComponent)则程序正常!
    否则键盘事件不执行,但同时鼠标事件一直运行正常!