import java.applet.Applet; import java.io.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; public class Pildiredaktor5 extends Applet { Joonistusala ala=new Joonistusala(); Teatehaldus th=new Teatehaldus(ala, this); Button tyhjenda=new Button("Tühjenda"); Button salvesta=new Button("Salvesta"); Button loe=new Button("Loe"); TextField tfFailinimi=new TextField(); Choice varvid=new Choice(); Choice kujund=new Choice(); public Pildiredaktor5(){ setLayout(new BorderLayout()); add(ala, BorderLayout.CENTER); ala.tyhjenda(); ala.paneVarv(Color.blue); ala.addMouseListener(th); tyhjenda.addActionListener(th); salvesta.addActionListener(th); loe.addActionListener(th); varvid.add("sinine"); varvid.add("punane"); varvid.add("kollane"); varvid.add("roheline"); varvid.add("must"); varvid.addItemListener(th); kujund.add("joon"); kujund.add("ovaal"); kujund.add("ristkülik"); kujund.add("täidetud ovaal"); kujund.add("täidetud ristkülik"); kujund.add("kopeeri"); kujund.add("kleebi"); Panel ylapaneel=new Panel(new GridLayout(2, 3)); ylapaneel.add(tyhjenda); ylapaneel.add(varvid); ylapaneel.add(kujund); ylapaneel.add(salvesta); ylapaneel.add(tfFailinimi); ylapaneel.add(loe); add(ylapaneel, BorderLayout.NORTH); } public static void main(String[] arg){ Frame f=new Frame("Pildiredaktor"); f.add(new Pildiredaktor5()); f.setSize(300, 300); f.setVisible(true); } class Teatehaldus implements MouseListener, ActionListener, ItemListener{ int algx, algy; Joonistusala jAla; Pildiredaktor5 pRed; public Teatehaldus(Joonistusala uusAla, Pildiredaktor5 uusRed){ jAla=uusAla; pRed=uusRed; } public void mousePressed(MouseEvent e){ algx=e.getX(); algy=e.getY(); if(pRed.kujund.getSelectedIndex()==6){ jAla.kleebi(algx, algy); } } public void mouseReleased(MouseEvent e){ int loppx=e.getX(); int loppy=e.getY(); int laius=loppx-algx; int korgus=loppy-algy; if(pRed.kujund.getSelectedIndex()==0) {jAla.joon(algx, algy, loppx, loppy);} if(pRed.kujund.getSelectedIndex()==1) {jAla.tyhiOvaal(algx, algy, laius, korgus);} if(pRed.kujund.getSelectedIndex()==2) {jAla.tyhiRistkylik(algx, algy, laius, korgus);} if(pRed.kujund.getSelectedIndex()==3) {jAla.taisOvaal(algx, algy, laius, korgus);} if(pRed.kujund.getSelectedIndex()==4) {jAla.taisRistkylik(algx, algy, laius, korgus);} if(pRed.kujund.getSelectedIndex()==5) {jAla.kopeeri(algx, algy, laius, korgus);} } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void actionPerformed(ActionEvent e){ if(e.getSource()==pRed.tyhjenda){jAla.tyhjenda();} if(e.getSource()==pRed.salvesta){ jAla.salvesta(pRed.tfFailinimi.getText()); } if(e.getSource()==pRed.loe){ jAla.loe(pRed.tfFailinimi.getText()); } } public void itemStateChanged(ItemEvent e){ if(pRed.varvid.getSelectedIndex()==0) {jAla.paneVarv(Color.blue);} if(pRed.varvid.getSelectedIndex()==1) {jAla.paneVarv(Color.red);} if(pRed.varvid.getSelectedIndex()==2) {jAla.paneVarv(Color.yellow);} if(pRed.varvid.getSelectedIndex()==3) {jAla.paneVarv(Color.green);} if(pRed.varvid.getSelectedIndex()==4) {jAla.paneVarv(Color.black);} } } class Joonistusala extends Panel{ BufferedImage pilt=new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB); BufferedImage kopeerpilt=new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); Graphics2D piltg=pilt.createGraphics(); public void paint(Graphics g){ g.drawImage(pilt, 0, 0, this); } public void tyhjenda(){ Color abivarv=piltg.getColor(); piltg.setColor(Color.white); piltg.fillRect(0, 0, 300, 300); piltg.setColor(abivarv); repaint(); } public void paneVarv(Color varv){ piltg.setColor(varv); } public void joon(int x1, int y1, int x2, int y2){ piltg.drawLine(x1, y1, x2, y2); repaint(); } public void tyhiOvaal(int x1, int y1, int laius, int korgus){ piltg.drawOval(x1, y1, laius, korgus); repaint(); } public void tyhiRistkylik(int x1, int y1, int laius, int korgus){ piltg.drawRect(x1, y1, laius, korgus); repaint(); } public void taisOvaal(int x1, int y1, int laius, int korgus){ piltg.fillOval(x1, y1, laius, korgus); repaint(); } public void taisRistkylik(int x1, int y1, int laius, int korgus){ piltg.fillRect(x1, y1, laius, korgus); repaint(); } public void salvesta(String failinimi){ try{ FileOutputStream voog=new FileOutputStream(failinimi); JPEGCodec.createJPEGEncoder(voog).encode(pilt); voog.close(); }catch(IOException viga){ viga.printStackTrace(); } } public void loe(String failinimi){ Image abipilt=Toolkit.getDefaultToolkit().getImage(failinimi); //try{Thread.sleep(2000);}catch(Exception e){} MediaTracker inkasso=new MediaTracker(this); inkasso.addImage(abipilt, 0); try{ inkasso.waitForAll(); }catch(Exception e){} piltg.drawImage(abipilt, 0, 0, this); repaint(); } public void kopeeri(int x, int y, int laius, int korgus){ kopeerpilt=pilt.getSubimage(x, y, laius, korgus); } public void kleebi(int x, int y){ piltg.drawImage(kopeerpilt, x, y, this); repaint(); } } }