import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JPanel;
public class Spielfeld extends JPanel implements MouseListener {
private static final long serialVersionUID = 1L;
Hauptfenster haupt;
private MyButton[][] buttons;
private int size;
public Spielfeld(Hauptfenster haupt) {
this.haupt = haupt;
size = 6;
this.setLayout(new GridLayout(size, size));
// Buttons erzeugen
buttons = new MyButton[size][size];
for (int y = 0; y < buttons.length; y++) {
for (int x = 0; x < buttons[0].length; x++) {
buttons[y][x] = new MyButton("");
buttons[y][x].setPreferredSize(new Dimension(100, 100));
buttons[y][x].setBackground(new Color(0, 100, 0));
buttons[y][x].setFocusable(false);
buttons[y][x].addMouseListener(this);
this.add(buttons[y][x]);
buttons[y][x].setX(x);
buttons[y][x].setY(y);
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
import javax.swing.ImageIcon;
public class Bilder {
private ImageIcon e_g_Nord;
public Bilder( ) {
// Der Pfad fuer die Grafiken wird zusammengebaut
String trenner = System.getProperty("file.separator");
String file = "bilder" + trenner;
e_g_Nord = new ImageIcon(getClass().getResource(file + "e_g_Nord.png"));
}
public ImageIcon get_e_g_Nord() {
return e_g_Nord;
}
}
b.setIcon(bilder.get_e_g_Nord());
Erstell uns mal ein minimales Beispiel, das kompilier- und ausführbar ist, und den Fehler gerade noch zeigt. Es wäre nicht ungewöhnlich, wenn Du dabei selbst den Fehler findestDer Code ist in Wirklichkeit viel länger. Ich habe vieles gelöscht, damit ihr mir leichter helfen könnt.
package de.hrw.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Hauptprogramm {
public static void main(String[] args) {
@SuppressWarnings("unused")
Hauptfenster hauptfenster = new Hauptfenster();
}
}
class Bilder {
private ImageIcon e_g_Nord;
public Bilder(boolean developerMode) {
// Der Pfad fuer die Grafiken wird zusammengebaut
String trenner = System.getProperty("file.separator");
String file = "bilder" + trenner;
e_g_Nord = new ImageIcon(getClass().getResource(file + "e_g_Nord.png"));
}
public ImageIcon get_e_g_Nord() {
return e_g_Nord;
}
}
class MyButton extends JButton {
private int y;
private int x;
public MyButton(String string) {
super(string);
}
public MyButton() {
super();
}
public int getY() {
return y;
}
public int getX() {
return x;
}
}
class Hauptfenster extends JFrame {
private static final long serialVersionUID = 1L;
private Spielfeld spielfeld;
public Hauptfenster() {
this.setTitle("Uebung");
this.setResizable(false);
spielfeld = new Spielfeld(this);
this.add(spielfeld);
this.pack();
// Position bestimmen
this.setLocationRelativeTo(null);
// Fenster schließen
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public Spielfeld getSpielfeld() {
return spielfeld;
}
}
class Spielfeld extends JPanel implements MouseListener {
private static final long serialVersionUID = 1L;
Hauptfenster haupt;
private MyButton[][] buttons;
private Bilder bilder;
private int size;
public Spielfeld(Hauptfenster haupt) {
this.haupt = haupt;
size = 6;
this.setLayout(new GridLayout(size, size));
boolean developerMode = false;
bilder = new Bilder(developerMode);
// Buttons erzeugen
buttons = new MyButton[size][size];
for (int y = 0; y < buttons.length; y++) {
for (int x = 0; x < buttons[0].length; x++) {
buttons[y][x] = new MyButton("");
buttons[y][x].setPreferredSize(new Dimension(100, 100));
buttons[y][x].setBackground(new Color(0, 100, 0));
buttons[y][x].addMouseListener(this);
buttons[y][x].setIcon(bilder.get_e_g_Nord());
this.add(buttons[y][x]);
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
Was wohl daran liegt, dass Du getX() und getY() von JComponent überschreibst.Ich konnte jetzt herausfinden, dass es funktioniert, wenn ich die Methoden getY und getX lösche.