Bilder initialisieren

Coldstorm

Gesperrt
hi...
ich hab folgendes Problem...ich will Bilder anzeigen...aber es funktioniert ned.
Folgender Code:

Code:
int Brett[][];
public Icon[] bild;

public void zeichneSpielfeld() {
      
      bild = new Icon[12];
      String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
              "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
      for(int i = 0; i < 12; i++) {
          bild[i] = getImage(bilder[i] + ".gif");
      }
/...
}

getImage stimmt aber ned...was muss ich da schreiben? Werde aus API und Co leider nicht schlau...
 
Also zur Benutzung der API:

Du schaust unter Icon nach und siehst, dass es sich um ein Interface handelt. Also musst du dir eine implementierende Klasse suchen, die Open in der Doku unter "All Known Implementing Classes" aufgeführt sind. Dort nimmst du ImageIcon und gehst zu dessen Doku. Dort ist dann ein Verweis auf ein Tutorial, wo beschrieben ist, wie man so ein Icon lädt.

Noch ein Tipp für deine Schleife: Du hast willst ja alle Bilder in deinem String-Array laden. Also deklariere doch das andere Array mit der Größe deines String-Array und lass auch die Schleife über diese Länge laufen (bilder.length). So kannst du einfach einen String hinzufügen und alles klappt immer noch wie gewünscht.
 
später mache ich dann das...

Code:
JButton[][] feld = new JButton[8][8];
      for (int c = 0; c < feld.length; ++c) {
          for (int r = 0; r < feld[ c].length; ++r) {
              feld[ c][r] = new JButton(bild[Brett[ c][r]]);
              feld[ c][r].setBackground((c + r) % 2 == 0 ? Color.GRAY : Color.WHITE);
              this.add(feld[ c][r]);

der Fehler liegt an dem getImage. Er sagt: The method getImage(String) is undefined for the type Spielfeld
 
ich habs nun auf ImageIcon geändert, wenn das besser ist...

Code:
public class Spielfeld extends JPanel implements MouseListener
  int Brett[][];
  public ImageIcon[] bild;
  
  public void zeichneSpielfeld() {
      
      bild = new ImageIcon[12];
      String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
              "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
      for(int i = 0; i < 12; i++) {
          bild[i] = createImageIcon(bilder[i] + ".gif");
      }

The method createImageIcon(String) is undefined for the type Spielfeld sagt er...
liegt das daran, dass ich von JPanel erbe oder wie?
Wie muss ich schreiben, weiß ned weiter...
 
Du musst schon noch ein paar Zeilen weiter lesen in dem Tutorial. Da steht doch die Methode.
 
ich habs nun auf ImageIcon geändert, wenn das besser ist...

Code:
public class Spielfeld extends JPanel implements MouseListener
  int Brett[][];
  public ImageIcon[] bild;
  
  public void zeichneSpielfeld() {
      
      bild = new ImageIcon[12];
      String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
              "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
      for(int i = 0; i < 12; i++) {
          bild[i] = createImageIcon(bilder[i] + ".gif");
      }

The method createImageIcon(String) is undefined for the type Spielfeld sagt er...
liegt das daran, dass ich von JPanel erbe oder wie?
Wie muss ich schreiben, weiß ned weiter...

Jap, daran liegt das... Ist aber auch nicht schlimm. Du kannst auch die Toolkit-Klasse benutzen, die Funktionsweise ist die selbe.
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Toolkit.html
Java:
bild[i] = Toolkit.getDefaultToolkit().getImage(bilder[i] + ".gif");
 
hm...das funktioniert, aber jetzt zeigt er einen Fehler weiter unten an, vorhin ging das aber irgendwie...

Code:
JButton[][] feld = new JButton[8][8];
      for (int c = 0; c < feld.length; ++c) {
          for (int r = 0; r < feld[ c].length; ++r) {
              feld[ c][r] = new JButton(bild[Brett[ c][r]]); // hier unterstreicht er die Zeile ab new
              feld[ c][r].setBackground((c + r) % 2 == 0 ? Color.GRAY : Color.WHITE);
              this.add(feld[ c][r]);

The constructor JButton(Image) is undefined...aber wie kann ich das sonst machen, wenn nicht so ?
 
Zuletzt bearbeitet:
Nimm doch mal bitte die Methode aus dem Tutorial. Das Toolkit liefert dir ein Image und kein ImageIcon und das kannst du nicht auf einen Button setzen.
 
Code:
  public ImageIcon[] bild;

  public void zeichneSpielfeld() {
      
      bild = new ImageIcon[12];
      String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
              "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
      for(int i = 0; i < 12; i++) {
      	bild[i] = getImage(bilder[i] + ".gif");

ist das eine andere Methode als getImage? Weil das geht ja wieder nicht...bin ich blind oder was...
 
Versuchs mal so:

Java:
public void zeichneSpielfeld() {
    bild = new ImageIcon[12];
    String[] bilder = new String[] {"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
              "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
    for(int i = 0; i < bild.length; i++) {
        bild[i] = new ImageIcon(Toolkit.getDefaultToolkit().getImage(bilder[i] + ".gif"));
    }
}
 

Neue Beiträge

Zurück