【发布时间】:2013-05-02 03:20:28
【问题描述】:
今天我有一个问题..
当我点击JButton 时,我的程序会创建一个 8x8 网格并显示坐标。
但我拒绝使用 JButton,我需要使用 JPanel.. 但我的 addMouseListener 无法正常工作,所以我不知道如何解决我从 4 小时开始搜索的问题.....
package coordboutons;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
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);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println((char)('a' + col) + "" + (8 - lin));
}
});
}
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
CoordBoutons coordBoutons = new CoordBoutons();
}
}
【问题讨论】:
-
我可能在这里遗漏了一些东西,但
ActionListener不是MouseListener -
你的意思是
addActionListener不工作。那是因为你不能用这种类型的监听器注册JPanel -
您尝试在面板中添加鼠标侦听器,对吗?但是您的代码是 actionListener,JPanel 中没有 actionlistener 方法。我认为拥有 64 个 newMouseListeners 是个坏主意,所有 64 个面板只需要一个。所以在你的 CaseEchiquier(int i, int j, MouseListener m) 中添加一个 mouselistener 作为参数
-
“我拒绝使用 JButton”……为什么?
标签: java swing jpanel awt mouselistener