我的目的是要按F1快捷键调用按钮test1的功能,但现在F1没任何反映,请大家帮忙给看看,谢谢大家,代码如下:import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JDialog;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JTextField;public class ss extends JDialog implements KeyListener
{
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JTextField jTextField = null; public void keyPressed(KeyEvent e)
{
System.out.println("ok Button1");
switch (e.getKeyCode()) {
case KeyEvent.VK_F1://按F1快捷键调用按钮test1的功能
buttonOk();
break;
default:
break;
};
}
public void keyReleased(KeyEvent e)
{
System.out.println("ok Button2");
}
public void keyTyped(KeyEvent e)
{
System.out.println("ok Button3");
}
private JButton getJButton()
{
if (jButton == null)
{
jButton = new JButton();
jButton.setBounds(new Rectangle(101, 59, 175, 56));
jButton.setText("test1");
jButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
buttonOk_actionPerformed(e);
}
});
}
return jButton;
}
void buttonOk_actionPerformed(ActionEvent e) {
buttonOk();
}
void buttonOk() {
System.out.println("ok Button");
}
private JButton getJButton1()
{
if (jButton1 == null)
{
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(106, 143, 155, 33));
jButton1.setText("test2");
}
return jButton1;
}
private JTextField getJTextField()
{
if (jTextField == null)
{
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(92, 11, 175, 29));
}
return jTextField;
}
public static void main(String[] args)
{
ss logForm = new ss();
logForm.show();
}
public ss()
{
//super(owner);
initialize();
}
private void initialize()
{
this.setSize(405, 350);
this.setContentPane(getJContentPane());
this.addKeyListener(this);
} private JPanel getJContentPane()
{
if (jContentPane == null)
{
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
}
}  //  @jve:decl-index=0:visual-constraint="10,-4"

解决方案 »

  1.   

    快捷键没设置http://zhidao.baidu.com/question/74718709.html
      

  2.   

    this.addKeyListener(this); 无法达到响应JDialog上键盘事件的效果
    因为你的JDialog上有JTextField  其键盘事件被JTextField截获了 所以无法响应JDialog上的键盘事件 也就是说这个键盘事件事件源应该是JTextField
      

  3.   

    getJTextField方法改下private JTextField getJTextField() {
    if (jTextField == null) {
    jTextField = new JTextField();
    jTextField.setBounds(new Rectangle(92, 11, 175, 29));
    }
    jTextField.addKeyListener(this);
    return jTextField;
    }
      

  4.   


    我把 JTextField 删除了,但F1一样不起作用.