import java.awt.image.*; import java.awt.*; import java.applet.Applet; import java.awt.event.*; import com.sun.image.codec.jpeg.*; import java.io.*; class pildiredaktor extends Applet implements MouseListener { static Frame f1=new Frame("Pildiredaktor"); static Frame f2=new Frame("juhtpaneel"); public static BufferedImage pilt=new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB); public BufferedImage kopeerpilt=new BufferedImage(1, 1,BufferedImage.TYPE_INT_RGB); public static Graphics2D piltg=pilt.createGraphics(); int algX; int algY; pildiredaktor() { tyhjenda(); addMouseListener(this); } public void paint(Graphics g) { System.out.println("PAINT"); g.drawImage(pilt, 0, 0, this); } public void mousePressed(MouseEvent e) { algX=e.getX(); algY=e.getY(); if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("Kleebi")==0) { piltg.drawImage(kopeerpilt, algX, algY, this); repaint(); } } public void tyhjenda(){ System.out.println("Tühjendan"); Color abivarv=piltg.getColor(); piltg.setColor(Color.white); piltg.fillRect(0, 0, 640, 480); piltg.setColor(abivarv); repaint(); } public void mouseReleased(MouseEvent e) { int loppX=e.getX(); int loppY=e.getY(); if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("Ovaal")==0) { piltg.drawOval(algX, algY, loppX-algX, loppY-algY); repaint(); } if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("T_Ovaal")==0) { piltg.fillOval(algX, algY, loppX-algX, loppY-algY); repaint(); } if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("Ristkülik")==0) { piltg.drawRect(algX, algY, loppX-algX, loppY-algY); repaint(); } if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("T_Ristkülik")==0) { piltg.fillRect(algX, algY, loppX-algX, loppY-algY); repaint(); } if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("Joon")==0) { piltg.drawLine(algX, algY, loppX, loppY); repaint(); } if(juhtpaneel.kujundid.getSelectedCheckbox().getLabel().compareTo("Lõika")==0) { kopeerpilt=pilt.getSubimage(algX, algY, loppX-algX, loppY-algY); } } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public static void itemStateChanged(ItemEvent i) { System.out.println("Värv valitud"); if(juhtpaneel.v2rvid.getSelectedIndex()==0) { piltg.setColor(Color.blue); } if(juhtpaneel.v2rvid.getSelectedIndex()==1) { piltg.setColor(Color.red); } if(juhtpaneel.v2rvid.getSelectedIndex()==2) { piltg.setColor(Color.green); } if(juhtpaneel.v2rvid.getSelectedIndex()==3) { piltg.setColor(Color.yellow); } if(juhtpaneel.v2rvid.getSelectedIndex()==4) { piltg.setColor(Color.white); } if(juhtpaneel.v2rvid.getSelectedIndex()==5) { piltg.setColor(Color.black); } if(juhtpaneel.v2rvid.getSelectedIndex()==6) { System.out.println(Integer.parseInt(juhtpaneel.R.getText())); Color c=new Color(Integer.parseInt(juhtpaneel.R.getText()), Integer.parseInt(juhtpaneel.G.getText()), Integer.parseInt(juhtpaneel.B.getText())); piltg.setColor(c); } } public static void main(String[] arg) { f1.add(new pildiredaktor()); f1.setSize(640,480); f1.setLocation(new Point(200,30)); f1.setVisible(true); f2.add(new juhtpaneel()); f2.setSize(190,480); f2.setLocation(new Point(0,30)); f2.setVisible(true); f1.addWindowListener(new Raamikuular()); f2.addWindowListener(new Raamikuular()); } } class juhtpaneel extends Applet implements ActionListener, ItemListener { Button avaf=new Button("Ava"); Button sulef=new Button("Salvesta"); TextField fnimi=new TextField(); static CheckboxGroup kujundid=new CheckboxGroup(); Checkbox ovaal=new Checkbox("Ovaal", kujundid, true); Checkbox t_ovaal=new Checkbox("T_Ovaal", kujundid, false); Checkbox ristkylik=new Checkbox("Ristkülik", kujundid, false); Checkbox t_ristkylik=new Checkbox("T_Ristkülik", kujundid, false); Checkbox joon=new Checkbox("Joon", kujundid, false); Checkbox l6ika=new Checkbox("Lõika", kujundid, false); Checkbox kleebi=new Checkbox("Kleebi", kujundid, false); static Choice v2rvid=new Choice(); static TextField R=new TextField("0",3); static TextField G=new TextField("0",3); static TextField B=new TextField("0",3); juhtpaneel() { setLayout(new BorderLayout()); Panel failpanel=new Panel(); failpanel.setLayout(new GridLayout(3,1)); failpanel.add(fnimi); failpanel.add(avaf); failpanel.add(sulef); avaf.addActionListener(this); sulef.addActionListener(this); add(failpanel, BorderLayout.SOUTH); Panel kujundpanel=new Panel(); kujundpanel.setLayout(new GridLayout(8,1)); kujundpanel.add(ovaal); kujundpanel.add(t_ovaal); kujundpanel.add(ristkylik); kujundpanel.add(t_ristkylik); kujundpanel.add(joon); kujundpanel.add(l6ika); kujundpanel.add(kleebi); add(kujundpanel, BorderLayout.NORTH); Panel v2rvipanel=new Panel(); v2rvipanel.setLayout(new GridLayout(2,2)); v2rvipanel.add(new Label("Valitud värv:")); v2rvipanel.add(v2rvid); v2rvid.addItemListener(this); v2rvid.add("Sinine"); v2rvid.add("Punane"); v2rvid.add("Roheline"); v2rvid.add("Kollane"); v2rvid.add("Valge"); v2rvid.add("Must"); v2rvid.add("OmaVärv"); v2rvipanel.add(new Label("OmaVärv:")); Panel rgb=new Panel(); rgb.setLayout(new GridLayout(3,2)); rgb.add(new Label("R:")); rgb.add(R); rgb.add(new Label("G:")); rgb.add(G); rgb.add(new Label("B:")); rgb.add(B); v2rvipanel.add(rgb); add(v2rvipanel, BorderLayout.WEST); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().compareTo("Ava")==0) { avaF(fnimi.getText()); } if(e.getActionCommand().compareTo("Salvesta")==0) { salvestaF(fnimi.getText()); } } void avaF(String fail) { Image abipilt=Toolkit.getDefaultToolkit().getImage(fail); MediaTracker inkasso=new MediaTracker(this); inkasso.addImage(abipilt, 0); try{ inkasso.waitForAll(); }catch(Exception e){} pildiredaktor.piltg.drawImage(abipilt, 0, 0, this); } void salvestaF(String fail) { try{ FileOutputStream voog=new FileOutputStream(fail); JPEGCodec.createJPEGEncoder(voog).encode(pildiredaktor.pilt); voog.close(); }catch(IOException viga){ viga.printStackTrace(); } } public void itemStateChanged(ItemEvent i) { pildiredaktor.itemStateChanged(i); } } class Raamikuular extends WindowAdapter { public void windowClosing(WindowEvent e) { if(e.getWindow()==pildiredaktor.f2) { System.exit(0); } if(e.getWindow()==pildiredaktor.f1) { e.getWindow().setVisible(false); } } }