Heute habe ich ein Problem .. Mein Programm machen ein 8x8 Raster und zeigen die Koordinaten, wenn ich auf eine JButton
klicke.addMouseListener für ein JPanel
aber ich weigere ich JButton
zu verwenden, und ich brauche für JPanel
zu gehen .. Aber meine addMouseListener
funktioniert nicht, damit ich weiß nicht, wie es möglich ist, zu beheben, dass ich seit 4h bin auf der Suche .....
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();
}
}
Ich könnte hier etwas fehlt, aber 'ActionListener' ist kein' MouseListener' – MadProgrammer
Sie meinen ' addActionListener' funktioniert nicht. Das liegt daran, dass Sie 'JPanel' nicht mit dieser Art von Listener registrieren können. – Reimeus
Ihr versucht einen Maus-Listener zu Ihren Panels hinzuzufügen, richtig? Aber Ihr Code lautet actionListener, in JPanel gibt es keine actionlistener-Methode. und ich denke, es ist eine schlechte Idee, 64 newMouseListeners zu haben, Sie brauchen nur einen für alle 64 Panels. Fügen Sie also einen Mauslistener als Parameter in Ihren CaseEchiquier ein (int i, int j, MouseListener) –