就是 我做了一个JFrame的窗体里面放了一个文本框  和两个按钮 
我想不用电击按钮来向文本框里面输入数字
就是直接在键盘上按1或2 然后在文本里面显示
可以给我看看吗??
      谢  各位高手了
  我写的代码如下:
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class tan extends JFrame{
JTextField text;
JButton button1, button2,button3,button4;
int i=-1;
int a,d,c;
boolean flag=true;
String s;
StringBuffer b =new StringBuffer(100);
public tan(){
b.append("");
text =new JTextField(15);
text.setEditable(false);
text.setHorizontalAlignment(JTextField.RIGHT);
button1 =new JButton("1");
button2 =new JButton("2");
    button3 =new JButton("输出");
     button4 =new JButton("*");
    

   Container c=getContentPane();
   
setLayout(new FlowLayout());
c.add(text);
c.add(button1);
c.add(button2);
c.add(button4);
c.add(button3);
setBounds(400,300,200,200);
setVisible(true);
button1.addKeyListener(new KeyAdapter() {
           public void keyPressed(KeyEvent e){
            if(e.getKeyCode()==KeyEvent.VK_1)
           
            { i=i+1;
    b.insert(i, 1);}
    text.setText(b.toString());
   
           
           }});
button2.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e){
         if(e.getKeyCode()==KeyEvent.VK_2)
        
         { i=i+1;
b.insert(i, 2);}
text.setText(b.toString());

        
        }});
}
     public static void main(String[] args){
tan t=new tan();
}

解决方案 »

  1.   

    很简单的.,只要换一个事件监听就可以了,
    button1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
      if(e.getSource()==button1){
      text.setText("1");
      }
    }
    });
    给你一个例子
      

  2.   

    package com.swing.frame;import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ComponentEvent;
    import java.awt.event.ComponentListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.KeyStroke;public class Tan extends JFrame implements ActionListener{ 
    JTextField text; 
    JButton button1, button2,button3,button4; 
    int i=-1; 
    int a,d,c; 
    boolean flag=true; 
    String s; 
    StringBuffer b =new StringBuffer(100); 
    public Tan(){ 
    b.append(""); 
    text =new JTextField(15); 
    text.setEditable(false); 
    text.setHorizontalAlignment(JTextField.RIGHT); 
    button1 =new JButton("1"); 
    button2 =new JButton("2"); 
        button3 =new JButton("输出"); 
         button4 =new JButton("*"); 
             Container c=getContentPane(); 
        
    setLayout(new FlowLayout()); 
    JPanel p = new JPanel();
    KeyStroke shiftup = KeyStroke.getKeyStroke(KeyEvent.VK_1,0);
    p.registerKeyboardAction(this,"VK_1",shiftup,JComponent.WHEN_FOCUSED);
    KeyStroke shiftup1 = KeyStroke.getKeyStroke(KeyEvent.VK_2,0);
    p.registerKeyboardAction(this,"VK_2",shiftup1,JComponent.WHEN_FOCUSED);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    p.add(text); 
    p.add(button1); 
    p.add(button2); 
    p.add(button4); 
    p.add(button3);
    c.add(p);
    setBounds(400,300,200,200); 
    setVisible(true); 
    }
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getActionCommand().equalsIgnoreCase("VK_1")){
     text.setText("1");
    }
    if(e.getActionCommand().equalsIgnoreCase("VK_2")){
        text.setText("2");
    }
    System.out.println(e.getActionCommand());
    }
       public static void main(String[] args){ 
    Tan t=new Tan(); 

    }  
      

  3.   

    你把text.setEditable(false); 设了false,自然不能编辑了,设为true,就可以从键盘输入了,在添加响应就可以计算了!
      

  4.   

    我不理解他的意思,他给出的代码是设置为false的.要求键盘输入,那我上面的例子是允许输入其它键盘字符.
    如果只是输入数字可以不用设置成false.直接可编辑就行了,关于键盘输入加减*/的话,用我的方法就可以了.
    如果一定要设置成false,也可以用我的方法.输入一个字符后去做一下判断就行了.