Today I have a problem..
My program make a 8x8 grid and show the coord when I click on a JButton
.
BUT I refuse to use JButton
and I need to go for JPanel
.. But my addMouseListener
isn't working so I don't know how is it possible to fix that I'm searching since 4h.....
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();
}
}
The problem is that the method
addActionListener
does not exists for a JPanel. You should use the appropriate listener for this case (java.awt.event.MouseListener
). SinceMouseListener
is an interface (and you don't want to implement all of its methods), you could use aMouseAdapter
and override only the method(s) you need, like this:JPanel
doesn't haveActionListener
capabilities. Instead, you need to use aMouseListener
Take a look at How to Write Mouse Listeners for more details...