Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Yksinkertainen appletti ei toimi (Java)

Sivun loppuun

Matso [04.12.2006 17:23:43]

#

import java.awt.*;
import java.applet.Applet;

public class Appletti extends Applet {
	public void paint(Graphics x){
		Image hahmo = getImage(getCodeBase(),"hahmo.gif");
		x.drawImage(hahmo,20,20,this);
	}
}

Ei ymmärtää! Mikä tos ny olevinaa on vikana. Nii simppeli koodi eikä pitäs mitään vikaa olla. hahmo.gif tiedosto on samassa kansiossa ku classit ja html tiedosto.

Blaze [04.12.2006 17:42:18]

#

Matso kirjoitti:

Ei ymmärtää! Mikä tos ny olevinaa on vikana.

Ei ymmärrä minäkään. Mulla toi nimittäin toimii.

moptim [04.12.2006 17:47:06]

#

Matso: oletko varmasti kääntänyt .class-tiedostoksi?

Matso [04.12.2006 17:55:04]

#

KingOfTheWorld kirjoitti:

Matso: oletko varmasti kääntänyt .class-tiedostoksi?

Joo. Eclipse tekee sen automaattisesti. Se kyllä toimii AppletViewerillä, mutta ei näytä tota kuvaa.

sooda [04.12.2006 18:05:52]

#

Jos eclipsesi aja softa -napista se avataan sillain, että työhakemistona on joku muu kuin se missä tuo kuva on? Jos to getCodeBase() antaakin jotain muuta kuin mitä pitäisi? Debuggaa vaikka printtaamalla sen arvo ulos.

Juhko [04.12.2006 18:55:31]

#

Tai kokeile jotakin muuta Java-ohjelmaa ja kokeile HTML-tiedostossa.

A-P [04.12.2006 21:18:29]

#

Matso kirjoitti:

public class Appletti extends Applet {
	public void paint(Graphics x){
		Image hahmo = getImage(getCodeBase(),"hahmo.gif");
		x.drawImage(hahmo,20,20,this);
	}
}

Ei ymmärtää! Mikä tos ny olevinaa on vikana.

Blaze kirjoitti:

Ei ymmärrä minäkään. Mulla toi nimittäin toimii.

Matso kirjoitti:

Se kyllä toimii AppletViewerillä, mutta ei näytä tota kuvaa.

Kannattaa lukea uudestaan api-dokumentaatiosta Graphics-luokan drawImage-metodin kuvaus. Kuvauksen mukaan metodi palauttaa toden, jos kuva piirrettiin kokonaan ja epätoden, jos kuva ei ollut kokonaan latautunut. Kuvan lataus on asynkroninen.

Eli, kun kuva ladataan, kutsu käynnistää kuvanlataussäikeen ja palaa heti takaisin. Jos kuvaa, jota ei vielä ole ennätetty ladata kokonaan, yritetään piirtää, piirtometodi palauttaa epätoden eikä kuva piirry.

Kuvien lataamisen yhteydessä käytetään yleensä MediaTracker-luokkaa, jonka avulla voidaan jäädä odottamaan kuvien latausta. Toinen mahdollisuus on esimerkiksi piirtää kuvat seuraavalla tavalla:

while (!g.drawImage(...));

Itse haksahdin tähän ominaisuuteen aikoinaan, koska en lukenut api-dokumentaatiota tarpeeksi tarkkaan, ja oletin kuvan lataamisen ja piirtämisen toimivan eri tavalla.

Matso [04.12.2006 22:29:50]

#

Kyllä se tuossa ainakin on ihan tolla tapaa tehty O_o
http://www.internetix.fi/opinnot/opintojaksot/6tekniikkatalous/java/

Blaze [04.12.2006 23:15:27]

#

A-P kirjoitti:

Kuvan lataus on asynkroninen.

Täytyypäs tunnustaa, että en tuota tienny. Pitää muistaa vastaisuuden varalta.

Kuitenkin minusta ei vaikuta, että tuo nyt se ongelma olis, kokeilin piirtää tuollasta 2,8 megan PNG:tä, ruutu on kyllä jonku aikaa harmaana (ja jos printtaan drawImagen paluuarvoa, se on false), mutta kuva ilmestyy siihen ennenpitkää, whilellä tai ilman.

Matso [04.12.2006 23:26:54]

#

sooda kirjoitti:

Jos eclipsesi aja softa -napista se avataan sillain, että työhakemistona on joku muu kuin se missä tuo kuva on? Jos to getCodeBase() antaakin jotain muuta kuin mitä pitäisi? Debuggaa vaikka printtaamalla sen arvo ulos.

Printtasin ton getCodeBase():n arvon ja se näytti ihan oikean polun.

Matso [05.12.2006 14:02:34]

#

Asia selvis. Java ei ilmeisesti osannut käsitellä MS Paintilla tallennettua .gif kuvaa. Lol.

A-P [05.12.2006 18:15:28]

#

Matso kirjoitti:

Asia selvis. Java ei ilmeisesti osannut käsitellä MS Paintilla tallennettua .gif kuvaa. Lol.

Tallentaako MS Paint edes gif-kuvia? Viimeksi, kun olen painttia käyttänyt, se ei osannut kuin bmp-kuvat.

Legu [05.12.2006 18:18:14]

#

Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)

Blaze [05.12.2006 19:50:39]

#

XP:n Paint osaa, vanhemmat ei.

A-P [05.12.2006 21:51:49]

#

Legu kirjoitti:

Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)

Windows 95:n. En tosin tajunnut, että Paintia oltaisiin sen jälkeen kehitetty. Toki giffejä parempiakin kuvamuotoja on olemassa, joten ei ole varmaan iso ongelma, että Paintilla tallennetut gif-kuvat eivät auenneet.

Matso [06.12.2006 12:40:09]

#

A-P kirjoitti:

Legu kirjoitti:

Kyllä tallentaa. Puhutko nyt jostain Windows 3.x mukana tulleesta Paintista? :)

Windows 95:n. En tosin tajunnut, että Paintia oltaisiin sen jälkeen kehitetty. Toki giffejä parempiakin kuvamuotoja on olemassa, joten ei ole varmaan iso ongelma, että Paintilla tallennetut gif-kuvat eivät auenneet.

Joo tuo paint tallentaa muutenkin kaikki kuvamuodot ihan paskasti. Tekee kaks kertaa isompikokosia tiedostoja kun vastaava tallennettuna esim GIMP:llä :F

sooda [06.12.2006 12:49:42]

#

Blaze kirjoitti:

XP:n Paint osaa, vanhemmat ei.

Jonkun Officen mukana tulee hassuja laajennuksia, joilla sain kerran 95:ssäkin pelaamaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta