Proiect de Practica: Simulare Paint in Java

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 18

UNIVERSITATEA DUNAREA DE JOS GALATI FACULTATEA DE STIINA CALCULATOARELOR SPECIALIZAREA CALCULATOARE SI TEHNOLOGIA INFORMATIEI

PROIECT DE PRACTICA
Simulare Paint in Java

Coordonator stiintific : Asist. Drd. Inf. NECULA Iulian

Student : VRANCIANU Sorina Mihaela Grupa 22C24

Simulare Paint in Java

Tema proiect: Aplicatie grafica care simuleaza Paint. Se vor alege culoarea de desen si obiectele grafice. Va fi disponibila si stergerea. Obiectivul acestei teme este de a crea o aplicatie simpla asemanatoare celei de tip Paint, pe platforma NetBeans, aplicatie ce permite utilizatorului sa deseneze pe ecran diferite obiecte geometrice, forme si apoi sa le salveze sau sa aplice alte optiuni disponibile in meniul aplicatiei.

Programul Java: Contine trei clase Img, Culoare si Butoane, o interfata denumita Ferestra si un Main. A.
import import import import import import import java.awt.*; java.awt.event.*; java.awt.image.*; java.io.*; java.util.*; javax.imageio.ImageIO; javax.swing.*;

public class Img extends JPanel implements MouseListener, MouseMotionListener, Serializable { protected final static int LINE=1,SQUARE=2,OVAL=3,ROUND_RECT=4,FREE_HAND=5, SOLID_SQUARE=22, SOLID_OVAL=33, SOLID_ROUND_RECT=44;

protected static Vector vLine,vSquare,vOval,vRoundRect,vFreeHand, vSolidSquare,vSolidOval,vSolidRoundRect,vFile; protected Stack undo; private Color culoareDesen, culoareFundal; private int x1,y1,x2,y2,linex1,linex2,liney1,liney2, drawMode=0; private boolean solidMode; private File fileName; public Img() { vLine vSquare vOval vRoundRect vFreeHand vSolidSquare vSolidOval vSolidRoundRect vFile

= = = = = = = =

new new new new new new new new

= new Vector(); Vector(); Vector(); Vector(); Vector(); Vector(); Vector(); Vector(); Vector();

addMouseListener(this); addMouseMotionListener(this); solidMode = false;

undo = new Stack(); culoareFundal=Color.GRAY; setBackground(culoareFundal); repaint(); } public void mousePressed(MouseEvent arg0) { x1 = linex1 = linex2 = arg0.getX(); y1 = liney1 = liney2 = arg0.getY(); } public void mouseClicked(MouseEvent arg0) { } public void mouseMoved(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { if (drawMode == LINE) { vLine.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(LINE ,new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } if (drawMode == SQUARE) {

if(solidMode) { if(x1 > arg0.getX() || y1 > arg0.getY()) { vSolidSquare.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen)); undo.push(new StepInfo(SOLID_SQUARE, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vSolidSquare.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(SOLID_SQUARE, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } else { if(x1 > arg0.getX() || y1 > arg0.getY()) { vSquare.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen)); undo.push(new StepInfo(SQUARE, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vSquare.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(SQUARE, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } } if (drawMode == OVAL) { if(solidMode) { if(x1 > arg0.getX() || y1 > arg0.getY()) { vSolidOval.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen)); undo.push(new StepInfo(SOLID_OVAL, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vSolidOval.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(SOLID_OVAL, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } else { if(x1 > arg0.getX() || y1 > arg0.getY()) { vOval.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen));

undo.push(new StepInfo(OVAL, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vOval.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(OVAL, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } } if (drawMode == ROUND_RECT) { if(solidMode) { if(x1 > arg0.getX() || y1 > arg0.getY()) { vSolidRoundRect.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen)); undo.push(new StepInfo(SOLID_ROUND_RECT, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vSolidRoundRect.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(SOLID_ROUND_RECT, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } else { if(x1 > arg0.getX() || y1 > arg0.getY()) { vRoundRect.add(new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen)); undo.push(new StepInfo(ROUND_RECT, new Coordonate(arg0.getX(),arg0.getY(),x1,y1,culoareDesen))); } else { vRoundRect.add(new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen)); undo.push(new StepInfo(ROUND_RECT, new Coordonate(x1,y1,arg0.getX(),arg0.getY(),culoareDesen))); } } } x1=linex1=x2=linex2=0; y1=liney1=y2=liney2=0; } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { }

public void mouseDragged(MouseEvent e) { x2 = e.getX(); y2 = e.getY(); if (drawMode { linex1 = liney1 = linex2 = liney2 = == Img.FREE_HAND) linex2; liney2; x2; y2;

vFreeHand.add(new Coordonate(linex1,liney1,linex2,liney2,culoareDesen)); undo.push(new StepInfo(FREE_HAND, new Coordonate(linex1,liney1,linex2,liney2,culoareDesen))); } repaint(); }

@Override protected void paintComponent(Graphics g){ super.paintComponent(g); redrawVectorBuffer(g); g.setColor(culoareDesen); if (drawMode == LINE) { g.drawLine(x1,y1,x2,y2); } if (drawMode == OVAL) { if(solidMode) { if(x1 > x2 || y1 > y2) g.fillOval(x2,y2,x1-x2,y1-y2); else g.fillOval(x1,y1,x2-x1,y2-y1); } else { if(x1 > x2 || y1 > y2) g.drawOval (x2,y2,x1-x2,y1-y2); else g.drawOval (x1,y1,x2-x1,y2-y1); } } if (drawMode == ROUND_RECT) { if(solidMode) { if(x1 > x2 || y1 > y2) g.fillRoundRect(x2,y2,x1-x2,y1-y2,25,25); else

g.fillRoundRect(x1,y1,x2-x1,y2-y1,25,25); } else {

} } if (drawMode == SQUARE) { if(solidMode) { if(x1 > x2 || y1 > y2) g.fillRect (x2,y2,x1-x2,y1-y2); else g.fillRect (x1,y1,x2-x1,y2-y1); } else { if(x1 > x2 || y1 > y2) g.drawRect (x2,y2,x1-x2,y1-y2); else g.drawRect (x1,y1,x2-x1,y2-y1); } } if (drawMode == FREE_HAND) { g.drawLine(linex1,liney1,linex2,liney2); } } public void setDrawMode(int mode) { drawMode = mode; } public int getDrawMode() { return drawMode; } public void setSolidMode(Boolean inSolidMode) { solidMode = inSolidMode.booleanValue(); } public Boolean getSolidMode() { return Boolean.valueOf(solidMode); } public void setForegroundColor(Color inputColor) { culoareDesen = inputColor; this.setForeground(culoareDesen); }

if(x1 > x2 || y1 > y2) g.drawRoundRect(x2,y2,x1-x2,y1-y2,25,25); else g.drawRoundRect(x1,y1,x2-x1,y2-y1,25,25);

public Color getForegroundColor() { return culoareDesen; } public void setBackgroundColor(Color inputColor) { culoareFundal = inputColor; this.setBackground(culoareFundal); } public Color getBackgroundColor() { return culoareFundal; } public void undo() { StepInfo tempInfo; if(undo.isEmpty()) JOptionPane.showMessageDialog(null, "Can't undo","Fereastra", JOptionPane.INFORMATION_MESSAGE); else { tempInfo = (StepInfo)undo.pop(); switch(tempInfo.getStepType()) { case 1: vLine.remove(vLine.size()-1); break; case 2: vSquare.remove(vSquare.size()-1); break; case 3: vOval.remove(vOval.size()-1); break; case 4: vRoundRect.remove(vRoundRect.size()-1); break; case 5: vFreeHand.remove(vFreeHand.size()-1); break; case 22:vSolidSquare.remove(vSolidSquare.size()-1); break; case 33:vSolidOval.remove(vSolidOval.size()-1); break; case 54:vSolidRoundRect.remove(vSolidRoundRect.size()-1); break; } } repaint(); } public void clearImg() { vFreeHand.removeAllElements(); vLine.removeAllElements(); vOval.removeAllElements(); vRoundRect.removeAllElements(); vSolidOval.removeAllElements(); vSolidRoundRect.removeAllElements();

vSolidSquare.removeAllElements(); vSquare.removeAllElements(); undo.clear(); repaint();

public void SaveImg() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int rez = fileChooser.showSaveDialog(null); if(rez == JFileChooser.CANCEL_OPTION) return; fileName = fileChooser.getSelectedFile(); RenderedImage rendImage = myImg(); if(fileName != null){ try { FileOutputStream fos = new FileOutputStream(fileName); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(vFile); JOptionPane.showMessageDialog(null,"File Saved","Fereastra",JOptionPane.INFORMATION_MESSAGE); }catch(Exception exp){} try { File file = new File(fileName.toString() + ".jpg"); ImageIO.write(rendImage, "jpg", file); }catch (IOException e) {} } else { vFile.removeAllElements(); vFile.addElement(vFreeHand); vFile.addElement(vLine); vFile.addElement(vOval); vFile.addElement(vRoundRect); vFile.addElement(vSolidOval); vFile.addElement(vSolidRoundRect); vFile.addElement(vSolidSquare); vFile.addElement(vSquare); vFile.addElement(new Color(culoareDesen.getRGB())); } repaint();

} public void OpenImg() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int rez = fileChooser.showOpenDialog(null); if(rez == JFileChooser.CANCEL_OPTION) return; fileName = fileChooser.getSelectedFile();

if(fileName != null) { try{ FileInputStream fis = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(fis); vFile = (Vector) ois.readObject(); this.clearImg(); vFreeHand = (Vector)vFile.elementAt(0); vLine = (Vector)vFile.elementAt(1); vOval = (Vector)vFile.elementAt(2); vRoundRect = (Vector)vFile.elementAt(4); vSolidOval = (Vector)vFile.elementAt(5); vSolidRoundRect = (Vector)vFile.elementAt(6); vSolidSquare = (Vector)vFile.elementAt(7); vSquare = (Vector)vFile.elementAt(8); culoareFundal = (Color)vFile.elementAt(9); this.setBackgroundColor(culoareFundal); } catch(Exception exp){ JOptionPane.showMessageDialog(null,"Can't open File","Fereastra",JOptionPane.INFORMATION_MESSAGE); } } else{ fileName = null; } repaint(); } private class Coordonate implements Serializable{ private int x1,y1,x2,y2; private Color culDesen; public Coordonate (int inx1,int iny1,int inx2, int iny2, Color culoare) { x1 = inx1; y1 = iny1; x2 = inx2; y2 = iny2; culDesen = culoare; } public { return } public { return } public { return Color culoare() culDesen; int getX1 () x1; int getX2 () x2;

10

} public { return } public { return } }

int getY1 () y1; int getY2 () y2;

private class StepInfo implements Serializable { private int stepType; private Coordonate stepCoordonate; public StepInfo(int inStepType, Coordonate inStepCoordonate) { stepType = inStepType; stepCoordonate = inStepCoordonate; } public int getStepType() { return stepType; } public Coordonate getStepCoordonate() { return stepCoordonate; }

private RenderedImage myImg() { BufferedImage bufferedImage = new BufferedImage(600,390, BufferedImage.TYPE_INT_RGB); Graphics g = bufferedImage.createGraphics(); redrawVectorBuffer(g); g.dispose(); return bufferedImage; } private void redrawVectorBuffer(Graphics g) for (int i=0;i<vFreeHand.size();i++){ g.setColor(((Coordonate)vFreeHand.elementAt(i)).culoare()); g.drawLine(((Coordonate)vFreeHand.elementAt(i)).getX1(), ((Coordonate)vFreeHand.elementAt(i)).getY1(), ((Coordonate)vFreeHand.elementAt(i)).getX2(), ((Coordonate)vFreeHand.elementAt(i)).getY2()); } for (int i=0;i<vLine.size();i++){ g.setColor(((Coordonate)vLine.elementAt(i)).culoare()); g.drawLine(((Coordonate)vLine.elementAt(i)).getX1(), ((Coordonate)vLine.elementAt(i)).getY1(), ((Coordonate)vLine.elementAt(i)).getX2(), ((Coordonate)vLine.elementAt(i)).getY2()); {

11

} for (int i=0;i<vOval.size();i++){ g.setColor(((Coordonate)vOval.elementAt(i)).culoare()); g.drawOval(((Coordonate)vOval.elementAt(i)).getX1(), ((Coordonate)vOval.elementAt(i)).getY1(), ((Coordonate)vOval.elementAt(i)).getX2()((Coordonate)vOval.elementAt(i)).getX1(), ((Coordonate)vOval.elementAt(i)).getY2()((Coordonate)vOval.elementAt(i)).getY1()); } for (int i=0;i<vRoundRect.size();i++){ g.setColor(((Coordonate)vRoundRect.elementAt(i)).culoare()); g.drawRoundRect(((Coordonate)vRoundRect.elementAt(i)).getX1(), ((Coordonate)vRoundRect.elementAt(i)).getY1(), ((Coordonate)vRoundRect.elementAt(i)).getX2()((Coordonate)vRoundRect.elementAt(i)).getX1(), ((Coordonate)vRoundRect.elementAt(i)).getY2()((Coordonate)vRoundRect.elementAt(i)).getY1(),25,25); } for (int i=0;i<vSolidOval.size();i++){ g.setColor(((Coordonate)vSolidOval.elementAt(i)).culoare()); g.fillOval(((Coordonate)vSolidOval.elementAt(i)).getX1(), ((Coordonate)vSolidOval.elementAt(i)).getY1(), ((Coordonate)vSolidOval.elementAt(i)).getX2()((Coordonate)vSolidOval.elementAt(i)).getX1(), ((Coordonate)vSolidOval.elementAt(i)).getY2()((Coordonate)vSolidOval.elementAt(i)).getY1()); } for (int i=0;i<vSolidRoundRect.size();i++){ g.setColor(((Coordonate)vSolidRoundRect.elementAt(i)).culoare()); g.fillRoundRect(((Coordonate)vSolidRoundRect.elementAt(i)).getX1(), ((Coordonate)vSolidRoundRect.elementAt(i)).getY1(), ((Coordonate)vSolidRoundRect.elementAt(i)).getX2()((Coordonate)vSolidRoundRect.elementAt(i)).getX1(), ((Coordonate)vSolidRoundRect.elementAt(i)).getY2()((Coordonate)vSolidRoundRect.elementAt(i)).getY1(),25,25); } for (int i=0;i<vSquare.size();i++){ g.setColor(((Coordonate)vSquare.elementAt(i)).culoare()); g.drawRect(((Coordonate)vSquare.elementAt(i)).getX1(), ((Coordonate)vSquare.elementAt(i)).getY1(), ((Coordonate)vSquare.elementAt(i)).getX2()((Coordonate)vSquare.elementAt(i)).getX1(), ((Coordonate)vSquare.elementAt(i)).getY2()((Coordonate)vSquare.elementAt(i)).getY1()); } for (int i=0;i<vSolidSquare.size();i++){ g.setColor(((Coordonate)vSolidSquare.elementAt(i)).culoare()); g.fillRect(((Coordonate)vSolidSquare.elementAt(i)).getX1(), ((Coordonate)vSolidSquare.elementAt(i)).getY1(), ((Coordonate)vSolidSquare.elementAt(i)).getX2()((Coordonate)vSolidSquare.elementAt(i)).getX1(), ((Coordonate)vSolidSquare.elementAt(i)).getY2()((Coordonate)vSolidSquare.elementAt(i)).getY1()); } } }

12

B.
import import import import java.awt.*; java.awt.event.*; javax.swing.*; javax.swing.JLabel;

public class Culoare extends JPanel{ private JPanel culoare; private JButton Desen,Fundal; private JLabel culoareDesenLbl,culoareFundalLbl,culDesenLbl,culFundalLbl; private Color culDesen, culFundal; private Img imagine; public Culoare(Img inimagine) { imagine = inimagine; culoareDesenLbl = new JLabel(""); culoareDesenLbl.setOpaque(true); culoareDesenLbl.setForeground(imagine.getForeground()); culoareDesenLbl.setBorder(BorderFactory.createLineBorder(Color.BLACK)); culoareFundalLbl = new JLabel(""); culoareFundalLbl.setOpaque(true); culoareFundalLbl.setBackground(imagine.getBackground()); culoareFundalLbl.setBorder(BorderFactory.createLineBorder(Color.WHITE)); Desen = new JButton("Desen"); Desen.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setForeGroundColor(); } } ); Fundal = new JButton("Fundal"); Fundal.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setBackGroundColor(); } } ); this.setLayout(new GridLayout(1,2)); this.add(Desen); } this.add(Fundal);

public void setForeGroundColor() {

13

culDesen = JColorChooser.showDialog(null,"Culoare desen",culDesen); if(culDesen!=null) { Desen.setBackground(culDesen); imagine.setForeground(culDesen); } } public void setBackGroundColor() { culFundal = JColorChooser.showDialog(null,"Culoare fundal",culFundal); if(culFundal!=null) { Fundal.setBackground(culFundal); imagine.setBackground(culFundal); } } }

C.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Butoane extends JPanel{ private JButton lineBtn, squareBtn, ovalBtn, roundRectBtn, freeHandBtn, undoBtn, clearBtn; private JCheckBox fullChk; private Img imagine; public Butoane(Img inimagine) { imagine = inimagine; lineBtn = ImageIcon("lineBtn.gif")); squareBtn = ImageIcon("squareBtn.gif")); ovalBtn ImageIcon("ovalBtn.gif")); roundRectBtn = ImageIcon("roundRectBtn.gif")); freeHandBtn = ImageIcon("freeHandBtn.gif")); undoBtn ImageIcon("undoBtn.gif")); clearBtn = ImageIcon("clearBtn.gif")); new JButton("",new new JButton("",new = new JButton("",new new JButton("",new new JButton("",new = new JButton("",new new JButton("",new

lineBtn.addActionListener(new ToolButtonListener()); lineBtn.setToolTipText("Line"); squareBtn.addActionListener(new ToolButtonListener()); squareBtn.setToolTipText("Retangle"); ovalBtn.addActionListener(new ToolButtonListener()); ovalBtn.setToolTipText("Oval"); roundRectBtn.addActionListener(new ToolButtonListener()); roundRectBtn.setToolTipText("Round Rectangle"); freeHandBtn.addActionListener(new ToolButtonListener());

14

freeHandBtn.setToolTipText("Free Hand"); undoBtn.addActionListener(new ToolButtonListener()); undoBtn.setToolTipText("Undo"); clearBtn.addActionListener(new ToolButtonListener()); clearBtn.setToolTipText("Clear Image"); fullChk = new JCheckBox("Full"); fullChk.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent event) { if(fullChk.isSelected()) imagine.setSolidMode(Boolean.TRUE); else imagine.setSolidMode(Boolean.FALSE); } } ); this.setLayout(new GridLayout(1,7)); this.add(lineBtn); this.add(squareBtn); this.add(ovalBtn); this.add(roundRectBtn); this.add(freeHandBtn); this.add(undoBtn); this.add(clearBtn); this.add(fullChk);

} private class ToolButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == lineBtn) { imagine.setDrawMode(Img.LINE); } if(e.getSource() == squareBtn) { imagine.setDrawMode(Img.SQUARE); } if(e.getSource() == ovalBtn) { imagine.setDrawMode(Img.OVAL); } if(e.getSource() == roundRectBtn) { imagine.setDrawMode(Img.ROUND_RECT); } if(e.getSource() == freeHandBtn) { imagine.setDrawMode(Img.FREE_HAND); } if(e.getSource() == undoBtn) { imagine.undo(); } if(e.getSource() == clearBtn) { imagine.clearImg(); }

15

} } }

D.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Fereastra extends JFrame{ private Img imagine; private Butoane buton; private Culoare culoare; private Container mainContainer; private String fileName; JMenuBar mainBar; JMenu fileMenu, editMenu, setColorMenuItem; JMenuItem newMenuItem, openMenuItem, closeMenuItem, saveMenuItem,foreGroundMenuItem, backGroundMenuItem ,exitMenuItem, undoMenuItem; public Fereastra(){ super("Paint"); fileName = null; mainBar = new JMenuBar(); setJMenuBar(mainBar); fileMenu newMenuItem openMenuItem closeMenuItem saveMenuItem exitMenuItem = new JMenu("File"); = = = = = new new new new new JMenuItem("New"); JMenuItem("Open"); JMenuItem("Close"); JMenuItem("Save"); JMenuItem("Exit");

newMenuItem.addActionListener(new ButoaneListener()); openMenuItem.addActionListener(new ButoaneListener()); saveMenuItem.addActionListener(new ButoaneListener()); closeMenuItem.addActionListener(new ButoaneListener()); exitMenuItem.addActionListener(new ButoaneListener()); fileMenu.add(newMenuItem); fileMenu.add(openMenuItem); fileMenu.add(closeMenuItem); fileMenu.addSeparator(); fileMenu.add(saveMenuItem); fileMenu.addSeparator(); fileMenu.add(exitMenuItem); editMenu = new JMenu("Edit"); undoMenuItem = new JMenuItem("Undo");

setColorMenuItem = new JMenu("Seteaza Culoare"); foreGroundMenuItem = new JMenuItem("Seteaza Culoare Desen"); backGroundMenuItem = new JMenuItem("Seteaza Culoare Fundal"); undoMenuItem.addActionListener(new ButoaneListener()); foreGroundMenuItem.addActionListener(new ButoaneListener());

16

backGroundMenuItem.addActionListener(new ButoaneListener()); setColorMenuItem.add(foreGroundMenuItem); setColorMenuItem.add(backGroundMenuItem); editMenu.add(undoMenuItem); editMenu.addSeparator(); editMenu.add(setColorMenuItem); mainBar.add(fileMenu); mainBar.add(editMenu); imagine = new Img(); culoare = new Culoare(imagine); buton = new Butoane(imagine); mainContainer = getContentPane(); mainContainer.add(buton,BorderLayout.NORTH); mainContainer.add(imagine,BorderLayout.CENTER); setSize(800, 600); setResizable(false); setVisible(true); addWindowListener ( new WindowAdapter () { @Override public void windowClosing (WindowEvent e) { System.exit(0); } @Override public void windowDeiconified (WindowEvent e) { imagine.repaint(); } @Override public void windowActivated (WindowEvent e) { imagine.repaint(); } } ); } public class ButoaneListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == newMenuItem || e.getSource() == closeMenuItem) { imagine.clearImg(); imagine.setDrawMode(0); imagine.setBackground(Color.WHITE); imagine.repaint(); } if(e.getSource() == exitMenuItem) { System.exit(0);

17

} if(e.getSource() == foreGroundMenuItem) { culoare.setForeGroundColor(); imagine.repaint(); } if(e.getSource() == backGroundMenuItem) { culoare.setBackGroundColor(); imagine.repaint(); } if(e.getSource() == saveMenuItem) { imagine.SaveImg(); } if(e.getSource() == openMenuItem) { imagine.OpenImg(); } if(e.getSource() == undoMenuItem) { imagine.undo(); }

} } }

E.
public class Main { public static void main(String[] args){ Fereastra application = new Fereastra(); application.show(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

Bibliografie: www.java.sun.com www.platform.neatbeans.org www.forums.java.net www.leconline.ro

18

You might also like