想问下各位大师,setFocusable表示 将此 Component 的焦点状态设置为指定值。此值覆盖 Component 的默认焦点状态。
那到底什么叫焦点,什么又是焦点状态。
XX.setFocusable(true)又是什么意思

解决方案 »

  1.   

    XX.setFocusable(true);//是指使XX能够被聚焦,但它不一定当前就处于焦点状态要使XX当前处焦点状态,则XX.requestFocusInWindow();所以说setFocusable(true)是前提
      

  2.   

    //键盘输入
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class KeyboardEventDemo extends JFrame {
      private KeyboardPanel keyboardPanel = new KeyboardPanel();  /** Initialize UI */
      public KeyboardEventDemo() {
        // Add the keyboard panel to accept and display user input
        getContentPane().add(keyboardPanel);    // Set focus
        keyboardPanel.setFocusable(true);//*********这里*********//
      }  /** Main method */
      public static void main(String[] args) {
        KeyboardEventDemo frame = new KeyboardEventDemo();
        frame.setTitle("KeyboardEventDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setVisible(true);
      }
    }// KeyboardPanel for receiving key input
    class KeyboardPanel extends JPanel implements KeyListener {
      private int x = 100;
      private int y = 100;
      private char keyChar = 'A'; // Default key  public KeyboardPanel() {
        addKeyListener(this); // Register listener
      }  public void keyReleased(KeyEvent e) {
      }  public void keyTyped(KeyEvent e) {
      }  public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
          case KeyEvent.VK_DOWN: y += 10; break;
          case KeyEvent.VK_UP: y -= 10; break;
          case KeyEvent.VK_LEFT: x -= 10; break;
          case KeyEvent.VK_RIGHT: x += 10; break;
          default: keyChar = e.getKeyChar();
        }    repaint();
      }  /** Draw the character */
      protected void paintComponent(Graphics g) {
        super.paintComponent(g);    g.setFont(new Font("TimesRoman", Font.PLAIN, 24));
        g.drawString(String.valueOf(keyChar), x, y);
      }
    }
     那上面程序我假如去掉keyboardPanel.setFocusable(true);为什么只能显示A  而不能显示键盘输入的呢?????????????????????????
      

  3.   

    去掉keyboardPanel.setFocusable(true);addKeyListener(this); 这里的监听键盘输入状态就无法起效,程序的窗体就不能接受键盘输入。
      

  4.   

    private char keyChar = 'A'; // Default key不能接受键盘输入就默认显示A