Tvorba appletu
V této kapitole se budeme snažit vytvořit jednoduchý aplet, který provede sečtení dvou čísel zadaných do textfeldů. Spuštění výpočtu se provede stiskem tlačítka.Vytvoříme třídu AppletScitani, která bude potomkem třídy JApplet. Datové položky třídy budou stejné.
public class Form extends JApplet{
private int prvni, druhe, soucet;
private JLabel l1,l2,l3;
private JTextField t1, t2;
private JButton b;
public Form() {};
Všimněme si, že v konstruktoru není umístěn žádný výkonný kód. Vytvoříme metodu init(), která bude obsahovat výkonný kód umístěný v chráněném bloku try-catch pro případ, že by inicializace neproběhla úspěšně. Velikost appletu je nastavena na 200 x 100 pixelů.
public void init() {
try
{
this.setSize(200,100);
this.setLayout(new GridLayout(3,2));
l1=new JLabel("Prvni cislo");
l2=new JLabel("Druhe cislo");
t1=new JTextField();
t2=new JTextField();
t1.setText(0);
t2.setText(0);
b=new JButton("Soucet");
l3=new JLabel();
this.getContentPane().add(l1);
this.getContentPane().add(l2);
this.getContentPane().add(t1);
this.getContentPane().add(t2);
this.getContentPane().add(b);
this.getContentPane().add(l3);
this.setVisible(true);
Za použití metody setText() inicializujeme výchozí hodnoty v textfeldech na 0, v opačném případě by mohlo dojít k výjimce. Práce s událostmi bude řešena stejně. Hodnoty obou sčítanců budou získány při události FocusEvent, vlastní sčítání proběhne po stisku tlačítka, výsledný text bude zobrazen v labelu.
t1.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
prvniZadej(e);
}
public void focusGained(FocusEvent e){};
});
t2.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
druheZadej(e);
}
public void focusGained(FocusEvent e){};
});
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
soucet(e);
}
});
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void prvniZadej(FocusEvent e) {
this.prvni=Integer.parseInt(t1.getText());
}
public void druheZadej(FocusEvent e) {
this.druhe=Integer.parseInt(t2.getText());
}
public void soucet(ActionEvent e) {
soucet=this.prvni+this.druhe;
l3.setText(String.valueOf(soucet));
}
}
Všimli jsme si, že oproti klasické aplikaci se zdrojový kód takřka neliší. Pouze kód, který byl původně umístěn v konstruktoru, přešel do metody init(). V našem případě jsme nepoužili metodu stop(), applet neprováděl žádné výpočetně náročné operace.
Autor: Filip Koval