我想实现,按button1,TextField中显示1,
按button2,TextField中显示2,
按button3,TextField中显示3,
按button4,TextField中显示4,
按button5,TextField中显示5,
我的代码:
import java.awt.*;
import java.awt.event.*;
public class MyGridLayout1 extends Frame
{
        private String[] name={"0","1","2","3","4","5",
        "6","7","8","9","+","-","*","/",".","=","?"};
        private Button[] btn= new Button[name.length];
        private TextField tf= new TextField();        public MyGridLayout1()
        {
                super("GridLayoutDemo");
                setLayout(new GridLayout(3,6,4,4));
                add(tf);
                for(int i = 0;i<name.length;i++)
                {
                        btn=new Button(name[i]);
                        this.add(btn[i]);
                }
                setSize(250,150);
                show();
            for(int i = 0;i<name.length;i++)          
                   {        
                         btn[i].addActionListener(new BtnListener());        
                   }        
          
        }
        class BtnListener implements ActionListener
        {
                public void actionPerformed(ActionEvent e)
                {
                //}[i]这里怎么区别是不同按钮的事件?
                }
        }
        public static void main(String[] args)
    {
      new MyGridLayout1();
      
    }                
                
                
                
刚学事件处理,请同行大哥帮忙

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    public class MyGridLayout1 extends Frame
    {
            private String[] name={"0","1","2","3","4","5",
            "6","7","8","9","+","-","*","/",".","=","?"};
            private Button[] btn= new Button[name.length];
            private TextField tf= new TextField();        public MyGridLayout1()
            {
                    super("GridLayoutDemo");
                    setLayout(new GridLayout(3,6,4,4));
                    add(tf);
                    for(int i = 0;i<name.length;i++)
                    {
                            btn=new Button(name[i]);
                            this.add(btn[i]);
                    }
                    setSize(250,150);
                    show();
                for(int i = 0;i<name.length;i++)          
                       {        
                             btn[i].addActionListener(new BtnListener());
                             btn[i].addActionCommand(name[i]);        
                       }        
              
            }
            class BtnListener implements ActionListener
            {
                    public void actionPerformed(ActionEvent e)
                    {
                    String command=e.getActionCommand();                
                    if (command.equals(name[1])){
                       按钮1事件处理                
                    }else if (command.equals(name[2])){{
                    按钮2事件处理                
                    }
                    .....
                    //}[i]这里怎么区别是不同按钮的事件?
                    }
            }
            public static void main(String[] args)
        {
          new MyGridLayout1();
          
        }
      

  2.   

    public void actionPerformed(ActionEvent e)
     {
        Button tempButton= (Button)e.getSource();
        System.out.println(menuItem.getName());
    String strTemp = menuItem.getName();
        可以根据button的名字来区别,当然还有其它方法 }
      

  3.   

    public void actionPerformed(ActionEvent e)
     {
        Button tempButton= (Button)e.getSource();
        System.out.println(tempButton.getName());
    String strTemp = tempButton.getName();
        可以根据button的名字来区别,当然还有其它方法 }上面的写错啦,看这个 
      

  4.   

    有getSource().equals也可以
    谢谢
    已解决,帖出代码
    import java.awt.*;
    import java.awt.event.*;
    public class MyGridLayout1 extends Frame
    {
    private String[] name={"0","1","2","3","4","5",
    "6","7","8","9","+","-","*","/",".","=","?"};
    private Button[] btn= new Button[name.length];
    private TextField tf= new TextField(); public MyGridLayout1()
    {
    super("GridLayoutDemo");
    setLayout(new GridLayout(3,6,4,4));



    add(tf);


    for(int i = 0;i<name.length;i++)
    {
    btn[i]=new Button(name[i]);
    this.add(btn[i]);
    }
    setSize(250,150);
    show();
        for(int i = 0;i<name.length;i++)          
            {        
             btn[i].addActionListener(new BtnListener());        
            } 
            
           this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
             closeWindow();
            }
            });        
      
    }
    class BtnListener implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    /* if (e.getSource().equals(btn[1]))
    {
    tf.setText("1");
    }*/
    for(int i = 0;i<10;i++)
    {
    if (e.getSource().equals(btn[i]))
    {

    tf.setText(new Integer(i).toString());
    }

    }
    if (e.getSource().equals(btn[10]))
    {
    tf.setText("+");
    }
    else if(e.getSource().equals(btn[11]))
    {
    tf.setText("-");
    }
    else if(e.getSource().equals(btn[12]))
    {
    tf.setText("*");
    }

    else if(e.getSource().equals(btn[13]))
    {
    tf.setText("/");
    }

    else if(e.getSource().equals(btn[14]))
    {
    tf.setText(".");
    }

    else if(e.getSource().equals(btn[15]))
    {
    tf.setText("=");
    }
    else if(e.getSource().equals(btn[16]))
    {
    tf.setText("?");
    }


    }
    }
    public void closeWindow()
    {
    System.exit(0);
    }
    public static void main(String[] args)
        {
          new MyGridLayout1();
          
        }
    }
      

  5.   

    这个计算器的代码可能对你有用
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class Calculator extends JFrame { private Container container;
    private GridBagLayout layout;
    private GridBagConstraints constraints; 
    private JTextField displayField;//计算结果显示区
    private String lastCommand;//保存+,-,*,/,=命令
    private double result;//保存计算结果
    private boolean start;//判断是否为数字的开始 public Calculator() { super("Calculator");
    container=getContentPane();
    layout=new GridBagLayout();
    container.setLayout(layout);
    constraints=new GridBagConstraints();
    start=true;
    result=0;
    lastCommand = "=";
    displayField=new JTextField(20);
    displayField.setHorizontalAlignment(JTextField.RIGHT);
    constraints.gridx=0;
    constraints.gridy=0;
    constraints.gridwidth=4;
    constraints.gridheight=1;
    constraints.fill=GridBagConstraints.BOTH;
    constraints.weightx=100;
    constraints.weighty=100;
    layout.setConstraints(displayField,constraints);
    container.add(displayField);
    ActionListener insert = new InsertAction();
    ActionListener command = new CommandAction();
    addButton("Backspace",0,1,2,1,insert);
    addButton("CE",2,1,1,1,insert);
    addButton("C",3,1,1,1,insert);
    addButton("7",0,2,1,1,insert);
    addButton("8",1,2,1,1,insert);
    addButton("9",2,2,1,1,insert);
    addButton("/",3,2,1,1,command);
    addButton("4",0,3,1,1,insert);
    addButton("5",1,3,1,1,insert);
    addButton("6",2,3,1,1,insert);
    addButton("*",3,3,1,1,command);
    addButton("1",0,4,1,1,insert);
    addButton("2",1,4,1,1,insert);
    addButton("3",2,4,1,1,insert);
    addButton("-",3,4,1,1,command);
    addButton("0",0,5,1,1,insert);
    addButton("+/-",1,5,1,1,insert);//只显示"-"号,"+"没有实用价值
    addButton(".",2,5,1,1,insert);
    addButton("+",3,5,1,1,command);
    addButton("=",0,6,4,1,command);
    setSize(300,300);
    setVisible(true);

    }
    private void addButton(String label,int row,int column,int with,int height,ActionListener listener) { JButton button=new JButton(label);
    constraints.gridx=row;
    constraints.gridy=column;
    constraints.gridwidth=with;
    constraints.gridheight=height;
    constraints.fill=GridBagConstraints.BOTH;
    button.addActionListener(listener);
    layout.setConstraints(button,constraints);
    container.add(button);
    }
    private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input=event.getActionCommand();
    if (start) {
    displayField.setText("");
    start=false;
    if(input.equals("+/-"))
    displayField.setText(displayField.getText()+"-"); 
    }

    if(!input.equals("+/-")) {
    if(input.equals("Backspace")) {
    String str=displayField.getText();
    if(str.length()>0)
      displayField.setText(str.substring(0,str.length()-1));
    }else if(input.equals("CE")||input.equals("C")) {
    displayField.setText("0");
    start=true;
    }else
    displayField.setText(displayField.getText()+input);
    }
    }
    }
    private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) {
    String command=evt.getActionCommand();
    if(start) {
    lastCommand=command;
    }else {
    calculate(Double.parseDouble(displayField.getText()));
    lastCommand=command;
    start=true;
    }
    }
    } public void calculate(double x) {
    if (lastCommand.equals("+")) result+= x;    
    else if (lastCommand.equals("-")) result-=x;
    else if (lastCommand.equals("*")) result*=x;   
    else if (lastCommand.equals("/")) result/=x;
    else if (lastCommand.equals("=")) result=x;
    displayField.setText(""+ result);
    } public static void  main(String []args) {
    Calculator calculator=new Calculator();
    calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }}