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.