import java.awt.Component; 
import java.awt.Container; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; import javax.swing.JButton; 
import javax.swing.JFrame; 
class buttonlistener implements ActionListener 

public void actionPerformed(ActionEvent e){ JButton jb=(JButton)e.getSource(); 
int x=jb.getBounds().x; 
int y=jb.getBounds().y; 
int ht=jb.getBounds().height; 
int wh=jb.getBounds().width; JButton down=(JButton)(jb.getComponentAt(x, y)); 
if(down!=null) 

      System.out.println(down.getText()); } 
else 
{   System.out.println(x); 
      System.out.println(y); 
      System.out.println(ht); 
      System.out.println(wh); 
  System.out.println("error"); 


  } 
public class test extends JFrame { public test() 

Container c=getContentPane(); 
c.setLayout(new GridLayout(2,2)); 
JButton j2=new JButton("1"); 
buttonlistener bl2=new buttonlistener(); 
j2.addActionListener(bl2); 
c.add(j2); 
JButton j3=new JButton("2"); 
buttonlistener bl3=new buttonlistener(); 
j3.addActionListener(bl3); 
c.add(j3); 
JButton j4=new JButton("3"); 
buttonlistener bl4=new buttonlistener(); 
j4.addActionListener(bl4); 
c.add(j4); 
JButton j1=new JButton(""); 
c.add(j1); 
} public static void main(String[] args) { 
test tt=new test(); 
tt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
tt.setSize(200,100); 
tt.setVisible(true); } } 
按第一个按钮结果是 

按第二个按钮的结果是 
96 

33 
96 
error 
按第三个按钮的结果是 

33 
33 
96 
error 
不知道有什么错误 
恳请帮助 
谢谢 

解决方案 »

  1.   

    應該是這樣吧?import java.awt.Component;
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;class buttonlistener implements ActionListener { public void actionPerformed(ActionEvent e) { JButton jb = (JButton) e.getSource();
    int x = jb.getBounds().x;
    int y = jb.getBounds().y;
    int ht = jb.getBounds().height;
    int wh = jb.getBounds().width; //JButton down = (JButton) (jb.getComponentAt(x, y));
    JButton down = (JButton)(e.getSource());
    if (down != null) {
    System.out.println(down.getText()); } else {
    System.out.println(x);
    System.out.println(y);
    System.out.println(ht);
    System.out.println(wh);
    System.out.println("error");
    }
    }}public class test1 extends JFrame { public test1() {
    Container c = getContentPane();
    c.setLayout(new GridLayout(2, 2));
    JButton j2 = new JButton("1");
    buttonlistener bl2 = new buttonlistener();
    j2.addActionListener(bl2);
    c.add(j2);
    JButton j3 = new JButton("2");
    buttonlistener bl3 = new buttonlistener();
    j3.addActionListener(bl3);
    c.add(j3);
    JButton j4 = new JButton("3");
    buttonlistener bl4 = new buttonlistener();
    j4.addActionListener(bl4);
    c.add(j4);
    JButton j1 = new JButton("");
    c.add(j1);
    } public static void main(String[] args) {
    test1 tt = new test1();
    tt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    tt.setSize(200, 100);
    tt.setVisible(true); }}