我有一个包含81个按钮的框架,假设所有按钮都没有名称,大小相等,并且都是自动设置的。因此,当我点击一个时,我想知道哪个被点击了。如果我使用一个实现MouseListener并使用此方法的类
mouseClicked(MouseEvent e){
temp[0]= e.getX();
temp[1]= e.getY();
}
如何查看这些坐标? 我是否必须将每个按钮设置为自己的位置才能执行此操作?
答案 0 :(得分:0)
我相信这就是你要找的东西。
public static final int BUTTONS_WIDTH_COUNT = 9;
public static final int BUTTONS_HEIGHT_COUNT = 9;
public static final Button[][] BUTTONS = new Button[BUTTONS_WIDTH_COUNT][BUTTONS_HEIGHT_COUNT]
...
// I'll assume that the buttons are taking up the entire frame so no offsets are taken into account
frame.addMouseListener(
new MouseAdaptor() {
mouseClicked(MouseEvent e) {
// The X Y coordinates are relative to the component so
int frameWidth = frame.getBounds().getWidth();
int frameHeight = frame.getBounds().getHeight();
Button buttonClicked = buttons[e.getX()/(frameWidth/BUTTONS_WIDTH_COUNT)][e.getY()/(frameHeight/BUTTONS_HEIGHT_COUNT)];
}
}
编辑:实际上,将相同的MouseAdaptor分配给所有按钮并使用e.getSource()
知道哪个按钮正在侦听器中调用会更好。