废话!当然是求组了!
http://expert.csdn.net/Expert/topic/2079/2079512.xml?temp=.3699304
加起来198粪!就是键盘事件不相应!怎么回事情

解决方案 »

  1.   

    试试用myJComponent.setFocusable(true);
      

  2.   

    Jcomponent没有setFoucusable()这个方法呀!只有this.requestFocus();
        this.resetKeyboardActions();
        view.isFocusTraversable();
        view.grabFocus();
        view.requestFocus();
    等方法!而且都加上了,怎么回事情呀!
      

  3.   

    Jcomponent没有setFoucusable()这个方法
    但java.awt.Component有,
    而Jcomponent是java.awt.Component的子类,可以在Jcomponent中用.
    你加上试试先,不行再把其他的乱七八糟的都去掉再试.
      

  4.   

    试了一下,没响应键盘事件是因为焦点首先停在Jcomponent前面的组建上.按Tab键切换到Jcomponent组件上就可以响应了.
    下面是代码.按2次Tab键后即可打印出键盘事件.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 {
      SketchPanel panel = new SketchPanel();
      JPanel jToolPane = new JPanel();
      JToolBar tb1 = new JToolBar();
      JToolBar tb2 = new JToolBar();  public SketchFrame() {
        setTitle("Sketch");
        setSize(WIDTH, HEIGHT);    // add panel to frame    Container contentPane = getContentPane();    tb1.add(new JButton("toolBar1"));
        tb2.add(new JButton("toolBar2"));
        jToolPane.add(tb1);
        jToolPane.add(tb2);
        contentPane.add(jToolPane, BorderLayout.NORTH);
        contentPane.add(panel, BorderLayout.CENTER);
        panel.setFocusable(true);  }  public static final int WIDTH = 300;
      public static final int HEIGHT = 200;
    }/**
       A panel for sketching with the keyboard.
     */
    class SketchPanel
        extends JComponent {
      private JTextArea ta = new JTextArea();
      public SketchPanel() {
        this.setLayout(new BorderLayout());
        this.add(new JScrollPane(ta));
        ta.setEditable(false);
        KeyHandler listener = new KeyHandler();
        addKeyListener(listener);
      }  public void addText(String text) {
        ta.append(text);
      }//   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();
          char c = (char) keyCode;
          addText("---- keyPressed: " + c + "\tkeyCode: " + keyCode + "\n");
          System.out.println(keyCode);
          // set distance
        }    public void keyReleased(KeyEvent event) {}    public void keyTyped(KeyEvent event) {
          char keyChar = event.getKeyChar();    }
      }
    }
      

  5.   

    是这样的,但这样按TabBNU不好吧!用户不方便呀!
      

  6.   

    如果不想按tab键,设计上就存在问题.
    Jcomponent上的键盘事件,当然只能在Jcomponent有焦点的时候才响应!例如:Jcomponent是一个画板,已经选定了画板中的一条直线并复制到了剪贴板中.Jcomponent中有键盘事件"Ctrl+V"粘贴操作,这时候你在Jcomponent上的另一个对话框中进行操作(即Jcomponent失去焦点),你想用Ctrl+C和Ctrl+v在对话框中的几个JTextField中进行操作,会有什么后果?
      

  7.   

    cooled(经典中,有灌水嫌疑) 哥哥!我的其他两个jcomponent现在是两个jtoolbar 你不会让这个也TAB一下吧!
    就算tab了得到了焦点,现在键盘事件可以相应了,但是
    当我用鼠标在该区域绘图是或者后,键盘事件又不相应了!
    呵呵!
      

  8.   

    就是这样的
    在frame里只加一个view的时候,一切正常,但是在加上jtoolbar
    来显示按钮!就不行了!
      

  9.   

    就是当我按下jtoolbar上的按钮,重新回到绘图区域中的时候?
    如何让视图其获焦点!