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
不知道有什么错误
恳请帮助
谢谢
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
不知道有什么错误
恳请帮助
谢谢
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");
}
}
用getSource来得到事件源这个太勉强了!