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);

}}
按第一个按钮结果是
1
按第二个按钮的结果是
96
0
33
96
error
按第三个按钮的结果是
0
33
33
96
error
不知道有什么错误
恳请帮助
谢谢

解决方案 »

  1.   

    getComponentAt()这函数用的不对
    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 (jb != null) {
    System.out.println(jb.getText()); } else { System.out.println(x);
    System.out.println(y);
    System.out.println(ht);
    System.out.println(wh);
    System.out.println("error");
    }
    }
      

  2.   

    JButton down=(JButton)(jb.getComponentAt(x, y)); 
    用getSource来得到事件源这个太勉强了!