import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ButtonDemo extends JFrame implements ActionListener,KeyListener
{
JTextField text;
JButton button;
public ButtonDemo()
{
JPanel panel=new JPanel();
this.getContentPane().add(panel);
text=new JTextField("0.");
text.setEditable(false);
button=new JButton("按钮");
button.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_1)
{
text.setText("1");
}
}
}
);
button.addActionListener(this);
panel.add(text);
panel.add(button);
this.pack();
this.setVisible(true);
this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{
text.setText("1");
}

public static void main(String args[])
{
new ButtonDemo();
}
}
想实现按键盘‘1’键,打印1,需要怎么修改?

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;public class ButtonDemo extends JFrame implements ActionListener,KeyListener
    {
    JTextField text;
    JButton button;
    public ButtonDemo()
    {
    JPanel panel=new JPanel();
    this.getContentPane().add(panel);
    text=new JTextField("0.");
    text.setEditable(false);
    button=new JButton("按钮");
    //***************************************
    text.addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent e)
    {
    int keyCode=e.getKeyCode();
    if(keyCode==KeyEvent.VK_1)
    {
    text.setText("1");
    }
    }
    }
    );
                      /******************************8
    button.addActionListener(this);
    panel.add(text);
    panel.add(button);
    this.pack();
    this.setVisible(true);
    this.addWindowListener(
    new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    }
    );
    }
    public void actionPerformed(ActionEvent e)
    {
    text.setText("1");
    }

    public static void main(String args[])
    {
    new ButtonDemo();
    }
    }
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class ButtonDemo extends JFrame implements ActionListener//,KeyListener
    {
    JTextField text;
    JButton button;
    public ButtonDemo()
    {
    JPanel panel=new JPanel();
    this.getContentPane().add(panel);
    text=new JTextField("0.");
    text.setEditable(false);
    button=new JButton("按钮");
    //button.
    button.addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent e)
    {
    int keyCode=e.getKeyCode();
    System.out.println("keyCode:" + keyCode + " VK_NUMPAD1:" + KeyEvent.VK_NUMPAD1 );

    if(keyCode==KeyEvent.VK_NUMPAD1)  // 这是数字键
    {
    text.setText("1");
    }
    }
    }
    );
    button.addActionListener(this);
    panel.add(text);
    panel.add(button);
    this.pack();
    this.setVisible(true);
    this.addWindowListener(
    new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    }
    );


    // 获取焦点,以便接收键盘事件
    button.requestFocus();

    }
    public void actionPerformed(ActionEvent e)
    {
    text.setText("1");
    }

    public static void main(String args[])
    {
    new ButtonDemo();
    }
    }
      

  3.   

    如果用button.addKeyListener的话,那么当焦点在button上的时候按“1”键才会打印出“1”!我想这不是楼主的本意吧。