Hei! Yritin tehdä yksinkertaista Applettia, missä on kaksi tekstikenttää, joihin voi syöttää kokonaisluvun. Näistä pitäisi lukea luvut ja laskea ne yhteen ja sitten kirjoittaa vastaus. Koodi on seuraava:
import java.lang.Integer;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Yritys extends Applet {
// Luodaan ja alustetaan tekstikent‰t.
private TextField kentta1 = new TextField("");
private TextField kentta2 = new TextField("");
private TextArea kentta3 = new TextArea("");
private int luku,luku1,luku2;
public void init() {
// Lis‰t‰‰n tekstikent‰t paneeliin.
add(kentta1); add(kentta2); add(kentta3);
luku1=Integer.parseInt(kentta1.getText());
luku2=Integer.parseInt(kentta2.getText());
luku=luku1 luku2;
kentta3.setText("" luku);
}
}
Tämä ei toimi, vaan antaa ajon aikana virheen Applet not initializet. Mistä tämä johtuu? Yritin tehdä tätä myös toisella tavalla, joka on seuraava:
import java.lang.Integer;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Kokeillaan extends Applet {
// Luodaan ja alustetaan tekstikent‰t.
private TextField kentta1 = new TextField("");
private TextField kentta2 = new TextField("");
private TextArea kentta3 = new TextArea("", 5, 40, TextArea.SCROLLBARS_NONE);
public void init() {
// Luodaan ja lis‰t‰‰n tapahtumank‰sittelij‰t.
kentta1.addActionListener(new TapahtKasittelija());
kentta2.addActionListener(new TapahtKasittelija());
// Lis‰t‰‰n tekstikent‰t paneeliin.
add(kentta1); add(kentta2); add(kentta3);
}
/* Luokka tapahtumien k‰sittelyyn */
class TapahtKasittelija implements ActionListener {
int luku1=0,luku2=0, luku=0;
public void actionPerformed(ActionEvent tapaht) {
if (tapaht.getSource() == kentta1 ){
luku1=Integer.parseInt(tapaht.getActionCommand());
}
if(tapaht.getSource() == kentta2) {
luku2=Integer.parseInt(tapaht.getActionCommand());
}
luku=luku1 luku2;
kentta3.append("" luku);
}
}
}
Tämä kyllä lähtee käyntiin, mutta ei toimi oikein. Missä vika mahtaisi olla?
Ongelmia applettien kanssa
2
587
Vastaukset 2
- foobarfoo
luku1=Integer.parseInt(tapaht.getActionCommand());
Luulen et haluat lukea kentta1 tekstin, eli luku1=Integer.parseInt(kentta1.getText()); :-) Sama näyttää olevan luku2:n kohdalla - Javakko
Jälkimmäisessä ohjelmassa ollaan enemmän oikeilla jäljillä. Tekstikenttiin pitää lisätä listener jotta tiedetään koska kenttien arvot muuttuu. Nyt kuitenkin molemmille tekstikentille tehdään oma listener-luokan ilmentymä joilla molemmilla on omat int luku1,luku2 arvot.
Selkeintä ehkä olisi jos tekisi itse apletista myös tuon kuuntelijan:
public class Kokeillaan extends Applet implements ActionListener
actionPerformed metodissa ei tässä tapauksessa tarvitse minusta tutkia mistä action tuli tai tallentaa arvoja pysyviin muuttujiin. Luetaan vain tekstikenttien arvot ja lasketaan yhteen:
int luku1=Integer.parseInt(kentta1.getText()),
luku2=Integer.parseInt(kentta2.getText()),
luku=luku1 luku2;
Textareaan tekstiä lisätessä pitää myös muistaa itse lisätä rivinvaihdot tms erotinmerkit, muuten kaikki tulostuu yhteen pötköön:
kentta3.append(luku "\n");
Koko ohjelma näyttäisi siis sitten tältä:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Kokeillaan extends Applet implements ActionListener {
private TextField kentta1 = new TextField("");
private TextField kentta2 = new TextField("");
private TextArea kentta3 = new TextArea("", 5, 40, TextArea.SCROLLBARS_NONE);
public void init() {
kentta1.addActionListener(this);
kentta2.addActionListener(this);
add(kentta1); add(kentta2); add(kentta3);
}
public void actionPerformed(ActionEvent tapaht) {
int luku1=Integer.parseInt(kentta1.getText()),
luku2=Integer.parseInt(kentta2.getText()),
luku=luku1 luku2;
kentta3.append(luku "\n");
}
}
Tuntuisi toimivankin. Tosin huomattavaa on että tekstikenttien action-tapahtuu vain kun käyttäjä painaa tekstikentässä enteriä. Eli pitää sitten luvun kirjoituksen jälkeen paina enter että mitään tapahtuu.
Asian selkein korjaus olisi tietty lisätä painike "Laske" johon actionlistener liitetään ja yhteenlasku suoritetaan kun kyseistä painiketta klikataan.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 721158
- 1011130
Olet nainen ollut vaikein rasti
Eniten olet tunteitani myllännyt ja niitä kuluttanut, ja tuottanut. 🤔75987Tiesitkö? Jorma Uotisen EX-rakas on Helena Lindgren - Nämä ovat välit nyt: "Me ollaan..."
Jorma Uotinen ja Helena Lindgren olivat avoliitossa v. 1982-1999. Pariskunta oli aikansa näyttävä julkkispari, missä i23973Kuhmolainen opettaja tuomittu vainoamisesta
https://yle.fi/a/74-20248184 ”Kuusikymppinen kuhmolaisnainen piinasi naapureitaan lähes kahdeksan vuoden ajan. Nainen22937Anteeksi J-mies
Anteeksi että myötävaikutin siihen että rakastuit minuun, jota et voi koskaan saada. Viimeksi kun näimme ja katselimme t126900- 131850
- 58795
Kenen viisautta on ollut laittaa tie väärällä murskeella pilalle
Kenen viisautta on ollut kun Siimeksen/Kylmänpurontie pantu pilalle kun on ajettu liian karkeaa mursketta. Rengasliikke27781Elämäni biisi -paljastus: Tänä lauantaina 26.9. nämä julkkikset istahtavat sinisille sohville!
Katsotko Elämäni biisiä? Elämäni biisi on monen suomalaisen suosikki. Vieraslista lauantaina 26.9. tarjoilee vieraita m6768- 45686
Minä muistan
Minä muistan sinut nauravana. Sellaisena, joka sai tavallisenkin hetken tuntumaan vähän kevyemmältä, kuin huoneeseen ol46681Koska Martina viettää aikaansa lapsiensa kanssa
Äiti vaan juoksee miehen perässä Tallinnassa, Lontoossa, Turussa. Kyllä oli kätilö oikeassa, kun sanoi, että ei olisi ka143662Mitä muuta on olemassa kuin lisääntyminen
Jos mies ei pääse lisääntymään niin mikä hänen osansa elämässä on? mitä jää jäljelle? Hän on vain muiden palvelija kok132652- 19637
Ähtäri on taas TV: n ja radion ykkösuutinen
Uusi podcast on julkaistu ja on nyt kuunneltavissa. Mot on tehnyt hyvää työtä! Mikko Savola ja kepu ei ota mitään vast48630Mihin Asiakirjat ovat voineet kunnasta kadota???
LUE kuinka verorahoja haaskattiin Yle: Ähtärin pandalaskelmat salattiin ja hukattiin - Satakunnan Kansa https://share.61629Siinä kävi mies nyt niin että tämä ämmä muuttaa ulkomaille
Vuonojen maa kutsuu, joten ei hätää. Et kuule minusta enää. 😂 Lycka till! Ämmä riittää.80612- 48604
- 35600