Ongelmia applettien kanssa

LCHawk

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?

2

569

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi

      Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit
      Maailman menoa
      107
      6788
    2. KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!

      STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
      Maailman menoa
      382
      6428
    3. Mikä siinä on ettei persuille leikkaukset käy?

      On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei
      Maailman menoa
      62
      3223
    4. Lääppijä Lindtman jäi kiinni itse teosta

      Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-2000011780852
      Maailman menoa
      117
      2728
    5. Juuri nyt! Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti

      Ai että mä nautin, Tytti erot vireille! "Käytös on kohdistunut avustajia ja toisia kansanedustajia kohtaan, uutisoi STT
      Maailman menoa
      108
      2360
    6. Onko kaivattusi

      liian vetovoimainen seksuaalisesti?
      Ikävä
      125
      1824
    7. Puolen vuoden koeaika

      Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro
      Ikävä
      21
      1687
    8. Huomaatteko Demari Tytti ei esitä pahoitteluitaan

      Samanlainen ilmeisesti kuin Marin eli Uhriutuu no he ovat Demareita ja muiden yläpuolella siis omasta mielestään
      Maailman menoa
      34
      1535
    9. Tytti Tuppurainen nöyryyttää avustajiaan

      Tytti Tuppurainen nöyryyttää SDP:n eduskuntaryhmän kokouksissa sekä avustajia että kansanedustajia. Hän nolaa ihmisiä ju
      Kotimaiset julkkisjuorut
      182
      1357
    10. On todella hassua

      Ajatella että pitäisit erityisen kuumana tai seksikkäänä?
      Ikävä
      74
      1247
    Aihe