/* PainikeTesti.java Esimerkissä testataan kuvaikkunaa, johon voi vaihtaa uuden kuvan painikkeella. Esimerkissä käytetään kuvan ja kuvatekstin esittämiseen canvas-luokasta tehtyä "piirtokangasta". Tekijä: Juha Peltomäki, 8.1998. */ import java.awt.*; import java.applet.*; import java.awt.event.*; public class PainikeTesti extends Applet { private Button painike1, painike2; private Kuvataulu kuva; private Panel sijoittelu_kehys = new Panel(); public void init() { setBackground(Color.lightGray); // Luo painikkkeet painike1 = new Button("1. Kuva"); painike2 = new Button("2. Kuva"); // Luo uusi kuvaikkuna kuva = new Kuvataulu("Norway.gif", getImage(getDocumentBase(), "Norway.gif")); // Luodaan painikkeiden tapahtumankäsittelijät painike1.addActionListener(new Kasittelija1()); painike2.addActionListener(new Kasittelija2()); // Lisätään painikkeet lomakkeelle setLayout(new BorderLayout()); sijoittelu_kehys.setLayout(new GridLayout(1, 2)); sijoittelu_kehys.add(painike1); sijoittelu_kehys.add(painike2); add(sijoittelu_kehys, BorderLayout.NORTH); add(kuva, BorderLayout.CENTER); } public void update(Graphics g) { super.repaint(); } /* Kaksi tapahtumankäsittelijäluokkaa painikkeiden tapahtumien käsittelyyn. */ class Kasittelija1 implements ActionListener { public void actionPerformed(ActionEvent tapahtuma) { kuva.aseta("Sweden.gif", getImage(getDocumentBase(), "Sweden.gif")); showStatus("Nappi1 pohjassa"); } } class Kasittelija2 implements ActionListener { public void actionPerformed(ActionEvent tapahtuma) { kuva.aseta("Finland.gif", getImage(getDocumentBase(), "Finland.gif")); showStatus("Nappi2 pohjassa"); } } } /* Luodaan luokka, jossa tulostetaan kuva ja kuvateksti. Luokka peritään Canvas-luokasta. Kuvan tulostamiseen käytetään paint()-metodia, jota kutsutaan aseta()-metodista. */ class Kuvataulu extends Canvas { private Image kuva; private String kuvateksti; public Kuvataulu(String nimi, Image k) { aseta(nimi, k); } public void aseta(String nimi, Image k) { kuvateksti = nimi; kuva = k; this.repaint(); // piirtäminen suoritetaan uudestaan } public void paint(Graphics g) { g.drawString(kuvateksti, 20, 15); g.drawImage(kuva, 1, 25, this); g.drawRect(0, 0, this.getSize().width - 1, this.getSize().height - 1); g.drawRect(1, 1, this.getSize().width - 3, this.getSize().height - 3); } }