Olen tekemässä applettia jossa olisi ensin yksi nappula, jota painettaessa apletille ilmestyisi uusi nappula. Miten tällainen pitäisi toteuttaa. Itse yritin seuraavasti:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Koe extends Applet implements ActionListener {
private Button secondButton;
private Button create;
public Koe() {
create = new Button("Create");
create.addActionListener(this);
add(create);
}
public void actionPerformed(final ActionEvent ae) {
final Object object = ae.getSource();
if (object == create) {
secondButton = new Button("Second");
secondButton.addActionListener(this);
add(secondButton);
}
if (object == secondButton) {
//Tee jotain muuta
}
}
}
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Koe extends Applet implements ActionListener {
private Button secondButton;
private Button create;
public Koe() {
create = new Button("Create");
create.addActionListener(this);
add(create);
}
public void actionPerformed(final ActionEvent ae) {
final Object object = ae.getSource();
if (object == create) {
secondButton = new Button("Second");
secondButton.addActionListener(this);
add(secondButton);
}
if (object == secondButton) {
//Tee jotain muuta
}
}
}
Vastaukset 3
Vanhimmat
if (object == create) {
koska getSource ei kuitenkaan palauta sitä samaa instanssia tai vertailu ei suoraan toimi
final String komento = ae.getActionCommand();
ja sitten perään
if (komento.equals("Create"))
{
toinen namiska
}
Voiko olla niin että getSource ei palauttaisi alkuperäistä oliota... Mitä siinä tapauksessa palautuisi?
Koodistasi puuttuu komponettien uudelleensijoittelu joka tehdään validate-metodilla.
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Container.html#validate()