2015-04-27 22 views
1
  1. 这是代码。
  2. 该按钮不能使用键,如果我不先点击它。如果你能帮助我,那么 会很棒。

我用日食时,我创造了这个框架如何用键按下这些按钮功能?

这仅仅是一个例子代码,但我只是想知道它是如何发挥作用

任何更多的detalis,请点击这里。

import java.awt.EventQueue; 

    import javax.swing.JFrame; 
    import javax.swing.JButton; 

    import java.awt.event.ActionListener; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.KeyAdapter; 
    import java.awt.event.KeyEvent; 
    import javax.swing.JTextField; 


    public class ExampleApp { 

    private JFrame frmHi; 
    private JTextField textField; 
    private JButton btnAnother; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        ExampleApp window = new ExampleApp(); 
        window.frmHi.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public ExampleApp() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frmHi = new JFrame(); 
     frmHi.setTitle("Hi"); 
     frmHi.setBounds(100, 100, 450, 300); 
     frmHi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frmHi.getContentPane().setLayout(null); 

     JButton btnEnter = new JButton("Enter"); 
     btnEnter.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent e) { 
       if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
        textField.setText("You pressed enter"); 
       } 
      } 
     }); 
     btnEnter.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       textField.setText("Hi there from button"); 
      } 
     }); 
     btnEnter.setBounds(119, 63, 89, 23); 
     frmHi.getContentPane().add(btnEnter); 

     textField = new JTextField(); 
     textField.setEnabled(false); 
     textField.setEditable(false); 
     textField.setBounds(108, 30, 173, 20); 
     frmHi.getContentPane().add(textField); 
     textField.setColumns(10); 

     btnAnother = new JButton("Backspace"); 
     btnAnother.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent arg0) { 
       if (arg0.getKeyCode() == KeyEvent.VK_BACK_SPACE){ 
        textField.setText("you pressed backspace"); 
       } 
      } 
     }); 
     btnAnother.setBounds(119, 119, 89, 23); 
     frmHi.getContentPane().add(btnAnother); 
    } 

} 
+0

这是个问题吗? –

+0

当我按下输入时,即使我编写了keylistener方法,它也没有显示任何内容,它只在点击按钮后才起作用,所以问题是如何解决这个问题? –

+0

backspace正在运行? –

回答

1

您的KeyListener添加到JButton,因此它只在按钮具有焦点(单击后)时才有效。

最好为您必须处理的密钥定义KeyBindings