Vaivaampa jälleen!
Ohjelmani olisi tarkoitus piirtää kuvia näytölle riippuen metodille annetuista parametreistä(kuvan nimi siis riippuu parametreistä). Kuvat ovat muotoa kuvake1.png, kuvake2.png jne.. Image-muuttuja muuttuu siis useaan kertaan paint-metodia suoritettaessa. nimiGen siis generoi kuvan nimen. Pätkä listausta:
//...
public void paint(Graphics g){
for(y = 0; y < 5; y++)for(x = 0; x < 5; x++){ //käydään taulukon jokainen solu läpi
switch (taulukko[x][y]){ //riippuen mikä on taulukon solun arvo piirretään tietty kuva
case 0:
kuva=getImage(getCodeBase(), nimiGen(0,lisäys));
g.drawImage(kuva, x, y, 100*x, 100*y, this);
break;
case 1:
kuva=getImage(getCodeBase(), nimiGen(1,lisäys));
g.drawImage(kuva, x, y, 100*x, 100*y, this);
break;
case 2:
kuva=getImage(getCodeBase(), nimiGen(2,lisäys));
g.drawImage(kuva, x, y, 100*x, 100*y, this);
break;
}; //switch-case
} //for-silmukka
} //paint()
public String nimiGen(int luku, int lisäLuku){
int a; //apumuuttuja selkeyden vuoksi
a=luku+lisäLuku;
nimi="kuvake" + a;
return nimi;
}Jostakin kumman syystä ei ruudulle piirry mitään. Miksihän näin käy?
Tarkista nyt aluksi, että kuva ei ole null (jos on niin voit päätellä, että kuvan lataus ei onnistunut -> nimi väärin (puuttunee .png lopusta) tai kuvaa ei löydy polusta). Toiseksi kuvan leveytenä ja korkeutena olevat x*100 ja y*100 ovat takuulla virheelliset. Kolmanneksi toi swicth näyttää olevan ihan turha, jos kaikissa tapauksissa koodi on muotoa
case n: getImage(getCodeBase(), nimiGen(n, lisäys));
En nyt tarkalleen muista pitikö myös update-metodille tehdä jotain (kutsu paint-metodiin), että piirrokset tulevat näkyviin tai päivittyvät kunnolla.
Niinpä niin. Olin tietysti nimigeneraattorista unohtanut päätteen lisäyksen. Oikea muoto metodillehan on seuraava:
public String nimiGen(int luku, int lisäluku, String pääte){
int a;
a=luku+lisäluku;
nimi="kuvake" + a + pääte; //pääte saa arvon ".gif" tai ".png"
return nimi;
}Ja päätteen arvoksi annetaan ".png" tai vaihtoehtoisesti ".gif".
FooBat kirjoitti:
Toiseksi kuvan leveytenä ja korkeutena olevat x*100 ja y*100 ovat takuulla virheelliset.
Olin epähuomiossa kopioinut koodin väärin. Oikea muoto:
g.drawImage(kuva, x*100, y*100, 100, 100, this);
Kiitos vastauksesta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.