Jak w temacie - chcę obsłużyć zdarzenie w klasie zewnętrznej. Wydaje mi się, że napisany kod jest poprawny, a jednak program nie działa jak powinien. W przypadku obsługi w klasie wewnętrznej wszystko działa jak należy... Proszę o wskazówki, co powinnam zmienić/dodać w klasie zewnętrznej.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class MojApplet extends Applet {
boolean italics = false,
bold = false;
CheckboxGroup checkboxgroup;
Checkbox checkbox5, checkbox6, checkbox1, checkbox2;
Button button;
int rozmiar = 10,
rodzaj = 0;
String czcionka = new String("Times New Roman");
Font appFont = new Font(czcionka, rodzaj, rozmiar); // poczatkowy stan napisu
String text = new String ("TEKST probny JAVA");
Color color = Color.black;
Wewnetrzna wewnetrzna;
Zewnetrzna zewnetrzna;
public void paint (Graphics g) {
setSize(500,200);
// 0-PLAIN, 1-BOLD, 2-ITALICS
if ((italics==true) && (bold==true)) rodzaj=3;
if ((italics==true) && (bold==false)) rodzaj=2;
if ((italics==false) && (bold==true)) rodzaj=1;
if ((italics==false) && (bold==false)) rodzaj=0;
appFont = new Font(czcionka, rodzaj, rozmiar);
g.setFont(appFont);
g.setColor(color);
g.drawString(text, 30, 100);
g.drawString(Integer.toString(rozmiar),30,150);
}
public void init(){
checkbox5 = new Checkbox("Italic");
checkbox6 = new Checkbox("Bold");
checkboxgroup = new CheckboxGroup();
checkbox1 = new Checkbox("18", false, checkboxgroup);
checkbox2 = new Checkbox("36", false, checkboxgroup);
button = new Button("Kliknij");
wewnetrzna = new Wewnetrzna();
zewnetrzna = new Zewnetrzna(checkbox1, checkbox2, rozmiar, button);
checkbox5.addItemListener(wewnetrzna);
checkbox6.addItemListener(wewnetrzna);
checkbox1.addItemListener(zewnetrzna);
checkbox2.addItemListener(zewnetrzna);
button.addActionListener(zewnetrzna);
add(checkbox5);
add(checkbox6);
add(checkbox1);
add(checkbox2);
add(button);
}
public class Wewnetrzna implements ItemListener {
public void itemStateChanged (ItemEvent e) {
if(e.getSource() == checkbox5){
italics = !italics;
}
if(e.getItemSelectable() == checkbox6){
bold = !bold;
}
repaint();
}
}
}
class Zewnetrzna extends Applet implements ItemListener, ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Checkbox checkbox1, checkbox2;
int rozmiar;
Button button;
public Zewnetrzna (Checkbox checkbox1, Checkbox checkbox2, int rozmiar, Button button) {
this.checkbox1 = checkbox1;
this.checkbox2 = checkbox2;
this.rozmiar = rozmiar;
this.button = button;
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == checkbox1){
rozmiar = 18;
}
if(e.getItemSelectable() == checkbox2){
rozmiar = 36;
}
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource()== button)
rozmiar = 18;
repaint();
}
}