import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; import java.io.*; import javax.swing.*; import javax.swing.filechooser.FileFilter; public class Redaktor extends Applet implements MouseListener, ActionListener{ int pildilaius=300, pildikorgus=300; int suurendus=2; BufferedImage pilt=new BufferedImage(pildilaius, pildikorgus, BufferedImage.TYPE_INT_RGB); Graphics2D piltg=pilt.createGraphics(); int allaX, allaY; CheckboxGroup varvivalikGroup; Checkbox varvivalik1; Checkbox varvivalik2; Checkbox varvivalik3; Checkbox varvivalik4; Checkbox varvivalik5; CheckboxGroup kujundGroup; Checkbox kujund1; Checkbox kujund2; Checkbox kujund3; Checkbox kujund4; Checkbox kujund5; Checkbox kujund6; Checkbox kujund7; Choice kujundivalik=new Choice(); Button salvestusnupp=new Button("Salvesta"); Button lugemisnupp=new Button("Ava"); Button sulgemisnupp=new Button("Sulge"); BufferedImage puhver; public Redaktor(){ setBackground (Color.lightGray); setLayout(new BorderLayout()); Panel p1=new Panel(new GridLayout(1, 5)); varvivalikGroup=new CheckboxGroup(); varvivalik1=new Checkbox("Punane", varvivalikGroup, true); varvivalik2=new Checkbox("Sinine", varvivalikGroup, false); varvivalik3=new Checkbox("Roheline", varvivalikGroup, false); varvivalik4=new Checkbox("Kollane", varvivalikGroup, false); varvivalik5=new Checkbox("Hall", varvivalikGroup, false); p1.add(varvivalik1); p1.add(varvivalik2); p1.add(varvivalik3); p1.add(varvivalik4); p1.add(varvivalik5); add(p1, BorderLayout.NORTH); Panel p2=new Panel(new GridLayout(7, 1)); kujundGroup=new CheckboxGroup(); kujund1=new Checkbox("Tühi Ristkülik", kujundGroup, true); kujund2=new Checkbox("Täis Ristkülik", kujundGroup, false); kujund3=new Checkbox("Tühi Ovaal", kujundGroup, false); kujund4=new Checkbox("Täis Ovaal", kujundGroup, false); kujund5=new Checkbox("Joon", kujundGroup, false); kujund6=new Checkbox("Kopeeri", kujundGroup, false); kujund7=new Checkbox("Kleebi", kujundGroup, false); p2.add(kujund1); p2.add(kujund2); p2.add(kujund3); p2.add(kujund4); p2.add(kujund5); p2.add(kujund6); p2.add(kujund7); add(p2, BorderLayout.WEST); addMouseListener(this); Panel p3=new Panel(new GridLayout(15, 1)); p3.add(salvestusnupp); p3.add(lugemisnupp); salvestusnupp.addActionListener(this); lugemisnupp.addActionListener(this); sulgemisnupp.addActionListener(this); add(p3, BorderLayout.EAST); Panel p4=new Panel(new GridLayout(1, 5)); p4.add(sulgemisnupp); add(p4, BorderLayout.SOUTH); } int ex(int px){ return px*suurendus; } int ey(int py){ return py*suurendus; } int px(int ex){ return ex/suurendus; } int py(int ey){ return ey/suurendus; } public void paint(Graphics g){ g.drawImage(pilt, 0, 0, pildilaius*suurendus, pildikorgus*suurendus, this); } public void update(Graphics g){paint(g);} //hoiab vilkumise eemal public void mousePressed(MouseEvent e){ allaX=px(e.getX()); allaY=py(e.getY()); if(kujund7.getState()){ //kleebi if(puhver!=null){ piltg.drawImage(puhver, allaX, allaY, this); repaint(); } } } public void mouseReleased(MouseEvent e){ if (varvivalik1.getState()) piltg.setColor(Color.red); else if (varvivalik2.getState()) piltg.setColor(Color.blue); else if (varvivalik3.getState()) piltg.setColor(Color.green); else if (varvivalik4.getState()) piltg.setColor(Color.yellow); else if (varvivalik5.getState()) piltg.setColor(Color.gray); int vyx=Math.min(allaX, px(e.getX())); int vyy=Math.min(allaY, py(e.getY())); int laius=Math.abs(allaX-px(e.getX())); int korgus=Math.abs(allaY-py(e.getY())); if(kujund1.getState()) piltg.drawRect(vyx, vyy, laius, korgus); if(kujund2.getState()) piltg.fillRect(vyx, vyy, laius, korgus); if(kujund3.getState()) piltg.drawOval(vyx, vyy, laius, korgus); if(kujund4.getState()) piltg.fillOval(vyx, vyy, laius, korgus); if(kujund5.getState()) piltg.drawLine(allaX, allaY, px(e.getX()), px(e.getY())); if(kujund6.getState()){ //kopeeri puhver=new BufferedImage(laius, korgus, BufferedImage.TYPE_INT_RGB); Graphics2D puhverg=puhver.createGraphics(); puhverg.drawImage(pilt, -vyx, -vyy, this); } repaint(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void actionPerformed(ActionEvent e){ try{ if(e.getSource()==lugemisnupp){ JFileChooser valija=new JFileChooser(new File(".")); valija.addChoosableFileFilter(new Pildifilter()); valija.showDialog(new JFrame(), "Vali fail"); Image failipilt=Toolkit.getDefaultToolkit().getImage("pilt1.jpg"); MediaTracker md=new MediaTracker(this); md.addImage(failipilt, 0); md.waitForAll(); piltg.drawImage(failipilt, 0, 0, this); repaint(); } if(e.getSource()==salvestusnupp){ FileOutputStream fos=new FileOutputStream("pilt1.jpg"); JPEGCodec.createJPEGEncoder(fos).encode(pilt); fos.close(); } if(e.getSource()==sulgemisnupp){ System.exit(0); } }catch(Exception ex){ ex.printStackTrace(); } } public static void main(String[] arg){ Frame f=new Frame(); f.add(new Redaktor()); f.setSize(600, 400); f.setVisible(true); } }