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
585
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
Ny se loppuu ( Kuhmo)
Yhtiö on myyty. Notta yyteet meleko äkkiä, notta. Pelastautukoon ken voi. Notta se on tuulista pian.521358Parikymppinen hakkasi nelikymppisen kriittiseen tilaan
Ja ihminen jäi junan alle lautiosaaressa...paljon on taas sattunut ja tapahtunut. Ketähän nämä uhrit mahtaa olla 🤔 htt181053- 93987
- 77683
- 37678
- 27480
Kaivattusi tärkein ulkoinen tuntomerkki
Onko jokin muu kuin yleinen kuten kaunis, laiha. hyväkroppainen jne.17458- 26451
Nainen, miten suhtautuisit
Jos mies ehdottaisi tapaamista? Entä siihen, jos mies kertoisi tapaamisessa tunteistaan ja haluaisi seurustella?53450Voitko kirjoittaa mulle tänne mies?
Jos täällä käyt? Ihan kaverimielessä, jos ei muuten? Haluaisin jutella sinun kanssa. Mulla on edelleen jotenkin niin h30423