我正在搜索从包含案例的棋盘获取坐标x / y! 我实际使用System.out.println来获取它,但这不是好方法...... 我需要从方法getX()和getY()获取这些数据!
专栏:A-H 行:1-8
我在3小时后搜索.....
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CoordBoutons extends JFrame {
CoordBoutons() {
super("GridLayout");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contenant = getContentPane();
contenant.setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
contenant.add(new CaseEchiquier(i, j));
}
}
pack();
setVisible(true);
}
class CaseEchiquier extends JPanel {
private int lin, col;
CaseEchiquier(int i, int j) {
lin = i;
col = j;
setPreferredSize(new Dimension(80, 75));
setBackground((i + j) % 2 == 0 ? Color.WHITE : Color.GRAY);
addMouseListener(new MouseAdapter() {
/* private Color background;
@Override
public void mousePressed(MouseEvent e) {
background = getBackground();
setBackground(Color.RED);
repaint();
}
*/
@Override
public void mousePressed(MouseEvent e) {
System.out.println((char)('a' + col) + "" + (8 - lin));
}
@Override
public void mouseEntered(MouseEvent e) {
}
/* @Override
public void mouseReleased(MouseEvent e) {
setBackground(background);
}
*/
});
// addActionListener(new ActionListener() {
// public void actionPerformed(ActionEvent evt) {
// System.out.println((char) ('a' + col) + "" + (8 - lin));
//
// }
// });
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
CoordBoutons coordBoutons = new CoordBoutons();
}
});
}
}
答案 0 :(得分:2)
MouseEvent包含可用于获取坐标的getX
和getY
方法。使用它如下:
public void mouseClicked(MouseEvent e) {
int x = e.getX();
}
在这种情况下, x
将包含用户按下鼠标按钮的坐标。
更新:
我已经根据你的评论更新了一些代码。这里我们使用getSource()
我们转换为CaseEchiquier
,因为这是getSource将返回的对象类型。之后,您拥有用户按下的对象,您可以执行您想要使用的任何逻辑
public void mouseClicked(MouseEvent e){
CaseEchiquier current =(CaseEchiquier)e.getSource(); // get the object that the user pressed
int lin = current.getLin();
int col= current.getCol();
//do something else with the object current
}
您还需要在CaseEchiquier类中添加getLin
和getCol
方法