已经对其添加了addKeyListener,当该控件获得焦点的时候,不能捕捉按键,求解,谢谢。

解决方案 »

  1.   

    import javax.swing.*;
    import java.awt.event.*;public class Test {
    public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setSize(800, 600);
    JDesktopPane desk = new JDesktopPane();
    JInternalFrame iFrame = new JInternalFrame("内部窗体", true, true, true, true);
    iFrame.setSize(200, 200);
    desk.add(iFrame);
    iFrame.setVisible(true);
    iFrame.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent event) {
    System.out.println("内部窗体1中您按下的键是" + event.getKeyChar());
    }
    });
    JInternalFrame iFrame2 = new JInternalFrame("内部窗体2", true, true, true, true);
    iFrame2.setBounds(100, 200, 200, 200);
    desk.add(iFrame2);
    iFrame2.setVisible(true);
    iFrame2.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent event) {
    System.out.println("内部窗体2中您按下的键是" + event.getKeyChar());
    }
    });
    frame.add(desk);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    iFrame.requestFocus();
    iFrame2.requestFocus();
    desk.requestFocus();
    }
    }关键是最后的requestFocus()方法,而且一定要放在JFrame.setVisible()之后调用,否则无效,因为JFrame都不可见,根本不可能让其上面的组件获取焦点。