You are on page 1of 54

//////////////////////lista//////////////////////// .....clasa lista.... package pack; import java.util.LinkedList; import java.util.

ListIterator; public class Lista <T> {

@SuppressWarnings("unchecked") public boolean addElementInainte(LinkedList list,ListIterator it,T s) th rows ListFullException { if (list.size()==10) throw new ListFullException(); if(it.hasNext()==false && it.hasPrevious()==false) { System.out.println("\nUn prim element"); it.add(s); } else { System.out.println("hasPrevious() "+it.hasPrevious()+" "+it.previous()); if(it.hasPrevious()==false) { it.add(s); System.out.println("\nAl doilea element"); } else { it.add(s); } } for(int i=0;i<list.size();i++) { System.out.println("list("+i+")= "+list.get(i)); } return true; } @SuppressWarnings("unchecked") public boolean addElementDupa (LinkedList list,ListIterator it,T s) thro ws ListFullException { if (list.size()==10) throw new ListFullException(); it.add(s);

System.out.println(" "); for(int i=0;i<list.size();i++) { System.out.println("list("+i+")= "+list.get(i)); } return true; } @SuppressWarnings("unchecked") public boolean deleteElement(LinkedList list,ListIterator it) throws Lis tInvalidArgumentException,ListEmptyException { if(list==null) throw new ListEmptyException(); if(list.size()==1) { list.remove(0); it=list.listIterator(); } else if(it.hasNext()) { System.out.println("\nStergere: "); Object ob=it.next(); if(it.hasPrevious()) it.previous(); if(it.hasNext()) it.next(); list.remove(ob); } else { it.previous(); list.remove(list.size()-1); } for(int i=0;i<list.size();i++) System.out.println("list("+i+")= "+list.get(i)); return true; } @SuppressWarnings("unchecked") public boolean hasElements(LinkedList list) { return list!=null; } public static void main(String[] args) throws Exception { new Frame1(); } }

///////////////////// ........clasa exceptii..... package pack; public class ListEmptyException extends Exception { public String toString() { return "Lista este goala: "+super.toString(); } public String getMessage() { return "Lista e goala ! "+super.getMessage(); } } ......... package pack; public class ListFullException extends Exception { public String toString() { return "Lista este plina: "+super.toString(); } public String getMessage() { return "Lista e plina ! "+super.getMessage(); } } ....... package pack; public class ListInvalidArgumentException extends Exception { public String toString() { return "Lista este goala: null "+super.toString(); } public String getMessage() { return "Lista e goala: null! "+super.getMessage(); } } .........clasa frame.... package pack;

import import import import import import import

java.awt.BorderLayout; java.awt.Color; java.awt.FlowLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.util.LinkedList; java.util.ListIterator;

import javax.swing.JButton;

import import import import

javax.swing.JFrame; javax.swing.JOptionPane; javax.swing.JPanel; javax.swing.JTextField;

@SuppressWarnings("serial") public class Frame1 extends JFrame implements ActionListener { private private private private private JButton btn1; JButton btn2; JButton btn3; JButton btnClear; JTextField txtMess;

static LinkedList list=new LinkedList(); @SuppressWarnings("unchecked") ListIterator it=list.listIterator(); Lista <String> l=new Lista <String> (); public Frame1() { super("Lista"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initComponents(); pack(); setResizable(true); setLocationRelativeTo(null); setVisible(true); } // private void initComponents() { setLayout(new FlowLayout()); setLayout(new BorderLayout()); JPanel pnlWest = new JPanel(new FlowLayout(FlowLayout.RIGHT)); btn1 = new JButton("addElementInainte"); btn1.addActionListener(this); pnlWest.add(btn1); btn2 = new JButton("addElementDupa"); btn2.addActionListener(this); pnlWest.add(btn2); btn3=new JButton("deleteElement"); btn3.addActionListener(this); pnlWest.add(btn3);

btnClear = new JButton("CLEAR"); btnClear.addActionListener(this); pnlWest.add(btnClear); add(pnlWest, BorderLayout.SOUTH); txtMess = new JTextField();

add(txtMess); txtMess.setBackground(Color.white); } public void actionPerformed(ActionEvent e) { String a,b; if (e.getSource() == btn1) { a=txtMess.getText(); try { l.addElementInainte(list,it,a); } catch (ListFullException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText("Valoarea "+a+" a fost introdusa in list a!!"); return; } if (e.getSource() == btn2) { b=txtMess.getText(); try { l.addElementDupa(list,it,b); } catch (ListFullException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText("Valoarea "+b+" a fost introdusa in list a!!"); return; } if (e.getSource() == btn3) { String value = JOptionPane.showInputDialog(Frame1.this, "Sterge Element"); if(value!=null && value.equals("")==false){ if(list.contains(value)) it=list.listIterator(list.indexOf(value)); try { l.deleteElement(list,it); } catch (ListInvalidArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (ListEmptyException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText("Valoarea introdusa a fost stearsa s tearsa "); } return; }

if (e.getSource() == btnClear) {

txtMess.setText(""); return; } } } ///////////////////////////////////////////////////// .....................stiva.............. ....clasa stiva.... package pack;

public class Stack <T> { private T[] v; private int dim; private int sp=-1; public Stack(int dim) { this.dim=dim; //v=new int[dim]; v=(T[])new Object[dim]; } public Stack() { this(20); } public boolean isEmpty() { return sp==-1; } public boolean isFull() { return sp==dim-1; } public void push (T val) throws StackFullException, StackInvalidArgument Exception { if (isFull()) { throw new StackFullException(); } else { if (val == null) { throw new StackInvalidArgumentException(); } v[++sp]=val; }

} public T pop() throws StackEmptyException { if (isEmpty()) { throw new StackEmptyException(); } else { return v[sp--]; } } public T top() throws StackEmptyException { if (isEmpty()) { throw new StackEmptyException(); } else { return v[sp]; } } public static void main(String[] args) throws Exception { new Frame1(); } } .......clasa exceptii.... package pack; public class StackEmptyException extends Exception{ public String toString() { return "Stiva este goala: "+super.toString(); } public String getMessage() { return "Stiva e goala"+super.getMessage(); } } ........ package pack; public class StackFullException extends Exception { public String toString() { return "Stiva este plina: "+super.toString(); } public String getMessage() { return "Stiva e plina"+super.getMessage();

} ........... package pack; public class StackInvalidArgumentException extends Exception{ public String toString() { return "Stiva este goala: null "+super.toString(); } public String getMessage() { return "Stiva e goala: null"+super.getMessage(); } } ..............frame.... package pack; import java.awt.*; import java.awt.event.*; import java.math.*; import javax.swing.*; @SuppressWarnings("serial") public class Frame1 extends JFrame implements ActionListener { private private private private private private JButton btn1; JButton btn2; JButton btn3; JButton btn4; JButton btnClear; JTextField txtMess;

Stack <String> s=new Stack <String> (); public Frame1() { super("Stiva"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initComponents(); pack(); setResizable(true); setLocationRelativeTo(null); setVisible(true); }

//

private void initComponents() { setLayout(new FlowLayout()); setLayout(new BorderLayout()); JPanel pnlWest = new JPanel(new FlowLayout(FlowLayout.RIGHT)); btn1 = new JButton("PUSH"); btn1.addActionListener(this); pnlWest.add(btn1); btn2 = new JButton("POP"); btn2.addActionListener(this); pnlWest.add(btn2); btn3=new JButton("TOP"); btn3.addActionListener(this); pnlWest.add(btn3); btn4=new JButton("Stack"); btn4.addActionListener(this); pnlWest.add(btn4); btnClear = new JButton("CLEAR"); btnClear.addActionListener(this); pnlWest.add(btnClear); add(pnlWest, BorderLayout.SOUTH); txtMess = new JTextField(); add(txtMess); txtMess.setBackground(Color.white); } public void actionPerformed(ActionEvent e) { String a,b = null,c = null; if (e.getSource() == btn1) { a=txtMess.getText(); try { s.push(a); } catch (StackFullException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (StackInvalidArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText("Valoarea "+a+" a fost introdusa in stiv

a!!"); return; } if (e.getSource() == btn2) { try { b=s.pop(); } catch (StackEmptyException e1) { // TODO Auto-generated catch block e1.printStackTrace();

} txtMess.setText("Valoarea extrasa= "+b); return; } if (e.getSource() == btn3) { try { b=s.top(); } catch (StackEmptyException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText("Valoarea din varf= "+b); return; } if (e.getSource() == btn4) { txtMess.setText("Elementele stivei: "); do{ try { c=s.pop(); } catch (StackEmptyException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } txtMess.setText(txtMess.getText()+c+" "); }while (!s.isEmpty()); return; } if (e.getSource() == btnClear) { txtMess.setText(""); return; } } } ////////////////coada//////////// .......coada.... package packq; public class ArrayCoada <T> implements Coada <T>{ // declaratie campuri /** * TODO// de modificat dimensiunea la 5; De facut un program care testea za * funtiile push pop si peek atat cazurile corecte cat si cele exception ale. * In caz de exceptie se vor prinde exceptiile si se vor afisa la consol a. */ private T[] elemente = (T[])new Object[100]; private int start = 0;// pozitia ultimului element adaugat private int end = 0; // declaratie metode public boolean isEmpty()

{ if (start == 0 && end == 0) { return true;// todo } else { return false; } } public boolean isFull() { return (end == 99); } /** * introduce elementul a in stiva. returneaza true daca introducerea a * reusit sau false daca stiva este plina */ public boolean offer(T a) { if (isFull()) { return false; } else if(isEmpty()) { elemente[start] = a; elemente[end]= elemente[start]; end++; return true; } else { elemente[end]=a; end++; return true; } } public void add(T a) throws CoadaFullException, CoadaInvalidArgumentExce ption { if (isFull()) { throw new CoadaFullException("Stiva plina"); } else { if (a == null) { throw new CoadaInvalidArgumentException(); } if(isEmpty()) {

elemente[start] = a; elemente[end]= elemente[start]; end++; } else { elemente[end]=a; end++; } } } /** * se extrage un element din stiva si se retruneaza. Daca stiva este goa la * va returna valoarea null */ public T poll() { if (isEmpty()) { return null; } else { T b; b = elemente[start]; for(int i=start;i<end;i++) elemente[i]=elemente[i+1]; end--; return b; } } public T pop() throws CoadaEmptyException { if (isEmpty()) { throw new CoadaEmptyException(); } else { T b; b = elemente[start]; for(int i=start;i<end;i++) elemente[i]=elemente[i+1]; end--; return b; } } /** * se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa d in * stiva sau se returneaza null daca stiva ii goala. */ public T element() { if (isEmpty())

{ return null; } else { return elemente[start]; } } /** * se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa d in * stiva. In mod similar se genereaza StackEmptyException sau se returne aza * null */ public T peek() throws CoadaEmptyException { if (isEmpty()) { throw new CoadaEmptyException(); } else { return elemente[start]; } } public String toString() { String s = "{"; for (int i = start; i < end; i++) { s += elemente[i] + ","; } /*if (!isEmpty()) { s += elemente[start]; }*/ s += "}"; return s; } } ......exceptii.... package packq; public class CoadaEmptyException extends CoadaException{ public CoadaEmptyException() { super(); // TODO Auto-generated constructor stub } public CoadaEmptyException(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public CoadaEmptyException(String arg0) { super(arg0); // TODO Auto-generated constructor stub }

public CoadaEmptyException(Throwable arg0) { super(arg0); // TODO Auto-generated constructor stub } } ............ package packq; public class CoadaException extends Exception { public CoadaException() { super(); // TODO Auto-generated constructor stub } public CoadaException(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public CoadaException(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public CoadaException(Throwable arg0) { super(arg0); // TODO Auto-generated constructor stub }

} ................. package packq; public class CoadaFullException extends CoadaException{ public CoadaFullException() { super(); // TODO Auto-generated constructor stub } public CoadaFullException(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public CoadaFullException(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public CoadaFullException(Throwable arg0) { super(arg0); // TODO Auto-generated constructor stub }

} ............ package packq; public class CoadaInvalidArgumentException extends CoadaException{ public CoadaInvalidArgumentException() { super(); // TODO Auto-generated constructor stub } public CoadaInvalidArgumentException(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public CoadaInvalidArgumentException(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public CoadaInvalidArgumentException(Throwable arg0) { super(arg0); // TODO Auto-generated constructor stub }

} ............. package packq; public interface Coada <T> { boolean isEmpty(); boolean isFull(); boolean offer(T a); void add(T a) throws CoadaFullException, CoadaInvalidArgumentException; T poll(); T pop() throws CoadaEmptyException; T element(); T peek() throws CoadaEmptyException; } ............. package packq; import import import import import import import import import java.awt.Container; java.awt.FlowLayout; java.awt.GridLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; javax.swing.JButton; javax.swing.JFrame; javax.swing.JLabel; javax.swing.JTextField;

import javax.swing.JPanel; public class GUIMain { Coada <String> queue = new ArrayCoada <String> (); JTextField textField; JLabel labelContinut; JLabel labelExtrase; JLabel labelVarf; public void init() { JFrame fereastra = new JFrame("Coada"); fereastra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container conteintPain = fereastra.getContentPane(); conteintPain.setLayout(new GridLayout(8,1)); JLabel label1 = new JLabel("Introduceti numarul: "); conteintPain.add(label1); textField = new JTextField(); conteintPain.add(textField); JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); conteintPain.add(panel); JButton adauga = new JButton("Adauga"); panel.add(adauga); adauga.addActionListener(new AdaugaAction()); JButton extrage = new JButton("Extrage"); panel.add(extrage); extrage.addActionListener(new ExtrageAction()); JButton varf = new JButton("Varf"); panel.add(varf); varf.addActionListener(new VarfAction()); JButton golire = new JButton("Golire"); panel.add(golire); golire.addActionListener(new GolireAction());

JLabel label2 = new JLabel("Continutul Stivei: "); conteintPain.add(label2); labelContinut = new JLabel(); labelContinut.setText(queue.toString()); conteintPain.add(labelContinut); labelExtrase = new JLabel(); labelExtrase.setText("Nu s-a extras inca"); conteintPain.add(labelExtrase); labelVarf = new JLabel(); labelVarf.setText("Varf"); conteintPain.add(labelVarf); fereastra.pack();

fereastra.setVisible(true); }

public static void main(String[] args) { GUIMain gui = new GUIMain(); gui.init(); } private class AdaugaAction implements ActionListener { public void actionPerformed(ActionEvent arg0) { System.out.println("Buton Adauga"); String a = textField.getText(); //Integer b = Integer.parseInt(a); try { queue.add(a); } catch (CoadaFullException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CoadaInvalidArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } // sau offer labelContinut.setText(queue.toString()); } } private class ExtrageAction implements ActionListener { public void actionPerformed(ActionEvent arg0) { System.out.println("Buton Extrage "); try { // sau poll labelExtrase.setText("" + queue.pop()); } catch (CoadaEmptyException e) { // TODO Auto-generated catch block e.printStackTrace(); } labelContinut.setText(queue.toString()); } }

private class VarfAction implements ActionListener { public void actionPerformed(ActionEvent arg0)// throws StackEmpt yException {

System.out.println("Buton varf"); // sau peek labelVarf.setText("Varful este: "+queue.element()); } } private class GolireAction implements ActionListener { public void actionPerformed(ActionEvent arg0)// throws StackEmpt yException { System.out.println("Buton varf"); while(queue.isEmpty() == false) { try { queue.pop(); } catch (CoadaEmptyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } labelContinut.setText(queue.toString()); } } } //////////////desene//////////// import import import import java.awt.event.ActionEvent; java.awt.event.ActionListener; javax.swing.JComboBox; javax.swing.JFrame;

import java.awt.*; @SuppressWarnings("serial") public class Ascultator extends JFrame implements ActionListener { CoboBoxExemplu box; PlansaDesenare plansa; public Ascultator(CoboBoxExemplu b) { box=b; } public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox)e.getSource(); String figNume = (String)cb.getSelectedItem(); @SuppressWarnings("unused") Graphics g=CoboBoxExemplu.frame.getGraphics(); System.out.println(figNume);

if(figNume.equals("Linie")) { PlansaDesenare.fig=0; plansa=new PlansaDesenare(); CoboBoxExemplu.contentPane.add(plansa); plansa.repaint(); plansa.validate(); } if(figNume.equals("Cerc")) { PlansaDesenare.fig=1; plansa=new PlansaDesenare(); plansa.repaint(); CoboBoxExemplu.contentPane.add(new PlansaDesenar e()); } if(figNume.equals("Patrat")) { PlansaDesenare.fig=2; plansa=new PlansaDesenare(); CoboBoxExemplu.contentPane.add(new Plans aDesenare()); plansa.validate(); } if(figNume.equals("Dreptunghi")) { PlansaDesenare.fig=3; plansa=new PlansaDesenare(); CoboBoxExemplu.contentPane.add(new PlansaDesenare()) ; } if(figNume.equals("Elipsa")) { PlansaDesenare.fig=4; plansa=new PlansaDesenare(); CoboBoxExemplu.contentPane.add(n ew PlansaDesenare()); } } } ......................... import javax.swing.*; import java.awt.*; @SuppressWarnings("serial") public class CoboBoxExemplu extends JPanel { String figStrings[]={"Linie","Cerc","Patrat","Dreptunghi","Elipsa"}; JComboBox comboBox;

JPanel panel; static JFrame frame; static Container contentPane; public CoboBoxExemplu() { super(new BorderLayout()); } public void initializare() { frame=new JFrame("Exemplu"); panel=new JPanel(); panel.setPreferredSize(new Dimension(200,200)); comboBox=new JComboBox(figStrings); comboBox.setSelectedIndex(0); comboBox.setPreferredSize(new Dimension(220,25)); contentPane=frame.getContentPane(); contentPane.add(new PlansaDesenare(),BorderLayout.CENTER); panel.add(comboBox); contentPane.add(panel,BorderLayout.NORTH);

Ascultator listener=new Ascultator(this); comboBox.addActionListener(listener); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800,600); frame.setVisible(true);

} public static void main(String[] args) { new CoboBoxExemplu().initializare(); } } ............................. import java.awt.*; @SuppressWarnings("serial") public class PlansaDesenare extends Canvas { Dimension canvasSize=new Dimension(400,400); static int fig=0; public PlansaDesenare() { repaint(); } public void paint(Graphics g) { switch(fig)

{ case 0: g.setColor(Color.BLUE); g.drawLine(400,0,100,100); //repaint(); break; case 1: g.setColor(Color.RED); g.drawOval(300, 0, 200, 200); //repaint(); break; case 2: g.setColor(Color.GREEN); g.drawRect(300, 0, 200, 200); //repaint(); break; case 3: g.setColor(Color.MAGENTA); g.drawRect(300, 0, 300, 200); //repaint(); break; case 4: g.setColor(Color.ORANGE); g.drawOval(300, 0, 300, 200); //repaint(); break; } } public Dimension getMinimumSize() { return canvasSize; } public Dimension getPreferredSize() { return canvasSize; } } ////////////////ceas//////////// import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.awt.image.BufferedImage; import java.util.*; //se ut. o imagine bufferata pt imaginea ceasului pt. ca // imaginea sa nu fie desenata de fiecare data @SuppressWarnings("serial") public class Ceas extends JComponent{ private static final double TWO_PI=2*Math.PI; //lungimea cercului private static final int UPDATE_INTERVAL=100; //milisecunde //intervalul de "reimprospatare"

private Calendar timpCurent=Calendar.getInstance(); // timpul actual private int diametru; //inaltime..latime fetei ceasului private int x; private int y; //coord mijlocului ceasului static long deplasare; private BufferedImage clockImage; // imaginea fetei ceasului e salvata private javax.swing.Timer timer; //update clock //Fires one or more action events after a specified delay. For example, an animation object can //use a Timer as the trigger for drawing its frames. //construtorul acestei clase private Ascultator asc; public Ceas() { asc=new Ascultator(); timer=new javax.swing.Timer(UPDATE_INTERVAL,asc); } // porneste timerul public void start() { timer.start(); } private void updateTime() { timpCurent.setTimeInMillis(System.currentTimeMillis()); } // opreste timerul public void stop() { timer.stop(); } public class Ascultator implements ActionListener { public void actionPerformed(ActionEvent arg0) { updateTime(); repaint(); } } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g;

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //setRenderingHints(Map hints) // inlocuieste valorile pt toate alegerile //alg. de redare cu cheile precizate //panoul este posibil sa se fi redimensionat ..ia in vedere noile pozitii int w = getWidth(); int h = getHeight(); diametru = ((w < h) ? w : h); x=diametru / 2; y=diametru / 2; //cream imaginea de fundal a ceasului daca am trecut pe aici pt //prima data sau data dimens panoului s-au schimbat if (clockImage == null clockImage.getWidth() != w clockImage.getHeight() != h) { clockImage = (BufferedImage)(this.createImage(w, h)); // accesam contextul grafic al imaginii Graphics2D g2a = clockImage.createGraphics(); g2a.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); drawClockFace(g2a); } // deseneaza imaginea cesasului g2.drawImage(clockImage, null, 0, 0); // deseneaza acele ceasului in mod dinamic drawClockHands(g2); } private void drawClockFace(Graphics2D g2) { // deseneaza ceasul g2.setColor(Color.cyan); g2.fillOval(0, 0, diametru,diametru); g2.setColor(Color.BLACK); g2.drawOval(0, 0,diametru,diametru); int raza = diametru/2; g2.drawString("12", raza-8,35); g2.drawString("6", raza-2,diametru-25); g2.drawString("3", diametru-25,raza+5); g2.drawString("9", 20,raza+5);

//desenez intervalele de timp de jur-imprejurul circumferintei for (int sec = 0; sec < 60; sec++) { int tickStart; if (sec%5 == 0) {

tickStart = raza - 10; // desenez linie lunga marcata p t. 5 } else { tickStart = raza - 5; // linie scurta. } drawRadius(g2, sec / 60.0, tickStart , raza); } } private void drawRadius(Graphics2D g2, double fractie, int minRadius, int maxRadius) { // // raphics2D ut. radiani // parametrul fractie e o fractie(0.0 - 1.0) din cale in sensul acelor de ceasornic de la 12. metodele din G ..invers...de la 3, mici conversii sunt necesare.

double radians = (0.5 - fractie) * TWO_PI; double sine = Math.sin(radians); double cosine = Math.cos(radians); int dxmin = x + (int)(minRadius * sine); int dymin = y+ (int)(minRadius * cosine); int dxmax = x + (int)(maxRadius * sine); int dymax = y + (int)(maxRadius * cosine); g2.drawLine(dxmin, dymin, dxmax, dymax); } private void drawClockHands(Graphics2D g2) { //... iau inf. necesare din clasa Calendar int ore = timpCurent.get(Calendar.HOUR); int minute = timpCurent.get(Calendar.MINUTE); int secunde = timpCurent.get(Calendar.SECOND); int miliSecunde = timpCurent.get(Calendar.MILLISECOND); int handMax = diametru / 2; linia din afara a orizontului // al doilea ac se extinde catre

double fsecunde = (secunde + (double)miliSecunde/1000) / 60.0; drawRadius(g2, fsecunde, 0, handMax); handMax = diametru / 3; double fminute = (minute + fsecunde) / 60.0; drawRadius(g2, fminute, 0, handMax); handMax = diametru / 4; drawRadius(g2, (ore + fminute) / 12.0, 0, handMax); }

} ............................... import java.awt.BorderLayout;

import import import import import import import import import

java.awt.Dimension; java.awt.GridLayout; java.awt.event.ActionEvent; java.awt.event.ActionListener; javax.swing.JButton; javax.swing.JFrame; javax.swing.JOptionPane; javax.swing.JPanel; javax.swing.JTextField;

@SuppressWarnings("serial") public class CeasAnalogic extends JFrame implements ActionListener{ private Ceas ceas; private JButton btn1=new JButton("Setare Ora"); private JButton btn2=new JButton("Setare Minute"); JTextField l1=new JTextField(); JTextField l2=new JTextField(); public CeasAnalogic() { ceas = new Ceas(); btn1.addActionListener(this); btn2.addActionListener(this); JPanel panel=new JPanel(new GridLayout(4, 1, 5, 5)); panel.add(btn1); panel.add(l1); panel.add(btn2); panel.add(l2); setPreferredSize(new Dimension(400,400)); setLayout(new BorderLayout()); add(ceas, BorderLayout.CENTER); add(panel,BorderLayout.WEST); start(); } public void start() { ceas.start(); } public void stop() { ceas.stop(); } @SuppressWarnings("static-access") public void actionPerformed(ActionEvent e) { @SuppressWarnings("unused") long a,b; if (e.getSource() == btn1) { try { a=new Long(l1.getText()); //ceasul incepe sa fct

System.out.println(a); if(a>12) { JOptionPane.showMessageDialog(this, "numar prea mare", "setare ora", JOptionPane.PLAIN_MES SAGE); } else Ceas.deplasare+=a*60*60*60*60*60; } catch (NumberFormatException e1) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(this, "INTRODUCETI NUMAR", "setare ora", JOptionPane.PLAIN_MESSAGE); }

return; } if (e.getSource() == btn2) { try{ b=new Long(l2.getText()); if(b>60) { JOptionPane.showMessageDialog(this, "numar prea mare", "setare minut", JOptionPane.PLAIN_MESSAGE); } else Ceas.deplasare=+b*60*60*60*60*60*60*60; } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(this, "INTRODUCETI NUMAR", "setare minut", JOptionPane.PLAIN_MESSAGE); } return; } } public static void main(String[] args) { CeasAnalogic ceas=new CeasAnalogic(); ceas.setVisible(true); ceas.setSize(200, 200); ceas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ceas.pack(); ceas.setResizable(true); ceas.setLocationRelativeTo(null); ceas.setVisible(true); }

} /////////////////////////// /////////////////////////////////////////////////////////// ///////////////////arbore////////////////////////// ////////clasa arbore///////// import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Arbore extends JApplet { private JPanel panouNord, panouVest, panouEst, panouSud; private JPanel subSouthPanel; private DeseneazaPanou drawArea; protected JLabel statusLabel; protected JTextField preTextField, inTextField, postTextField; protected JButton clearButton, butonInsereaza, butonCauta, butonSterge; private int latime = 620, inaltime = 450; protected boolean amIanApplication; protected String dsvInfo, llInfo; public void setWidth(int w) { latime = (w >= 0 ? w : latime); } public void setHeight(int h) { inaltime = (h >= 0 ? h : inaltime); } public void init(boolean isApplication) { amIanApplication = isApplication; init(); } public void checkButtons() { boolean enabled = drawArea.hasElements(); butonCauta.setEnabled(enabled); butonSterge.setEnabled(enabled); preTextField.setText(drawArea.getPreOrder()); inTextField.setText(drawArea.getInOrder()); postTextField.setText(drawArea.getPostOrder()); } public void init() { statusLabel = new JLabel("Arbore Binar"); panouNord = new JPanel(); panouVest = new JPanel(); panouEst = new JPanel(); panouSud = new JPanel(); drawArea = new DeseneazaPanou();

preTextField = new JTextField(); preTextField.setEditable(false); inTextField = new JTextField(); inTextField.setEditable(false); postTextField = new JTextField(); postTextField.setEditable(false);

clearButton = new JButton("Sterge arborele"); clearButton.setMnemonic('C'); clearButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(Arbore.this, "Arborele este vid", " Vid", JOptionPane.PLAIN_MESSAGE); drawArea.clear(); Arbore.this.checkButtons(); } } ); butonInsereaza = new JButton("Adauga..."); butonInsereaza.setMnemonic('A'); butonInsereaza.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String value = JOptionPane.showInputDialog(Arbore.this, "Add Elem ent"); if(value != null && !value.trim().equals("")) { drawArea.addElement(value); } Arbore.this.checkButtons(); doLayout(); } } ); butonCauta = new JButton("Cauta..."); butonCauta.setMnemonic('F'); butonCauta.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String value = JOptionPane.showInputDialog(Arbore.this, "Find Element"); if(value != null && !value.trim().equals("")) { if(drawArea.findElement(value)) JOptionPane.showMessageDialog(Arbore.this, "Element " + value.trim() + " Gasit", "Sterge Element",

JOptionPane.PLAIN_MESSAGE); else JOptionPane.showMessageDialog(Arbore.this, "Elementu nu a fost gasit ", "Elementul a fost gasit", JOptionPane.PLAIN_MESSAGE); } } } ); butonCauta.setEnabled(false); butonSterge = new JButton("Sterge..."); butonSterge.setMnemonic('D'); butonSterge.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String value = JOptionPane.showInputDialog(Arbore.this, "Sterge Element"); if(value != null && !value.trim().equals("")) { if(!drawArea.deleteElement(value)) JOptionPane.showMessageDialog(Arbore.this, "Elementul nu a fost gasit ", "Sterge Element", JOptionPane.PLAIN_MESSAGE); } Arbore.this.checkButtons(); } } ); butonSterge.setEnabled(false); subSouthPanel = new JPanel(); subSouthPanel.setLayout(new FlowLayout()); subSouthPanel.add(clearButton); subSouthPanel.add(butonInsereaza); subSouthPanel.add(butonCauta); subSouthPanel.add(butonSterge); panouSud.setLayout(new BorderLayout()); panouSud.add(subSouthPanel, BorderLayout.CENTER); panouSud.add(statusLabel, BorderLayout.SOUTH); panouVest.add(new JLabel(" ")); panouEst.setLayout(new GridLayout(10, 1)); panouEst.add(new JLabel("Traversari:")); panouEst.add(new JLabel("preordine:")); panouEst.add(preTextField); panouEst.add(new JLabel("inordine:")); panouEst.add(inTextField); panouEst.add(new JLabel("postordine:")); panouEst.add(postTextField); Container myContainer = getContentPane(); myContainer.setLayout(new BorderLayout());

myContainer.add(new JScrollPane(drawArea), BorderLayout.CENTER); myContainer.add(panouVest, BorderLayout.WEST); myContainer.add(panouSud, BorderLayout.SOUTH); myContainer.add(panouEst, BorderLayout.EAST); addKeyListener( new KeyAdapter() { public void keyTyped( KeyEvent e ) { String value = "" + e.getKeyChar(); if(!value.trim().equals("")) { drawArea.addElement(value); Arbore.this.checkButtons(); doLayout(); } } } ); setSize(latime, inaltime); setVisible(true); } public static void main(String args[]) { int latime = 620, inaltime = 450; JFrame myFrame = new JFrame("Aplicatie"); myFrame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); Arbore appletObject = new Arbore(); appletObject.setWidth(latime); appletObject.setHeight(inaltime); appletObject.init(true); appletObject.start(); myFrame.getContentPane().add(appletObject); myFrame.setSize(latime, inaltime); myFrame.setVisible(true); } } ///////clasa deseneazaPanou////////// import java.awt.*; import java.awt.event.*;

import javax.swing.*; import java.util.*; public class DeseneazaPanou extends JPanel { protected Nod radacina; boolean primaData; private int maxx; private int maxy; public DeseneazaPanou() { setBackground(Color.white); radacina = null; primaData = true; maxx = 600; maxy = 400; repaint(); } public Dimension getPreferredSize() { return new Dimension(maxx, maxy); } public void paint(Graphics g) { super.paint(g); int xstg = 0; int xdrt = 0; int yjos = 0; boolean changesize = false; if(primaData && radacina != null) { FontMetrics fm = g.getFontMetrics(); radacina.setMetrics(fm.getHeight(), fm.getMaxAdvance(), fm.getAscent()) ; primaData = false; } if(radacina != null) { xstg = Math.abs(radacina.getMinx(0)); xdrt = Math.abs(radacina.getMaxx(0)) + 60; yjos = radacina.getMaxy(0) + radacina.getinaltime() * 3; } if(maxx < (xdrt + xstg)) { maxx = (xdrt + xstg); changesize = true; } if(maxy < yjos) { maxy = yjos; changesize = true; }

if(changesize == true) { setSize(maxx, maxy); } if(radacina != null) radacina.inorder(g, xstg + 20, 16); else { int y = 16; xstg = 30; g.drawString("radacina", xstg - 12, y); g.drawLine(xstg, y + 2, xstg, y + 16); g.drawLine(xstg, y + 16, xstg - 4, y + 16 - 4); g.drawLine(xstg, y + 16, xstg + 4, y + 16 - 4); g.drawString("null", xstg - 12, y + 28); } } public boolean addElement(String s) { boolean retValue; if(radacina == null) radacina = new Nod(s); retValue = radacina.add(s); repaint(); return retValue; } /** * Gets the Pre-Order traversal * @return a <code>String</code> representation of the pre-order traversal */ public String getPreOrder() { String temp; if(radacina == null) return ""; temp = radacina.txtPreorder(); return temp.substring(1, temp.length()); } /** * Gets the In-Order traversal * @return a <code>String</code> representation of the in-order traversal */ public String getInOrder() { String temp; if(radacina == null) return ""; temp = radacina.txtInorder(); return temp.substring(1, temp.length()); } /** * Gets the Post-Order traversal

* @return a <code>String</code> representation of the post-order traversal */ public String getPostOrder() { String temp; if(radacina == null) return ""; temp = radacina.txtPostorder(); return temp.substring(1, temp.length()); } /** * Clears the tree */ public void clear() { radacina = null; primaData = true; repaint(); } public boolean findElement(String elem) { if(radacina == null) return false; return radacina.findElement(elem); } /** * Deletes an element * @param elem the element * @return <code>true</code> if the element was deleted successfully */ public boolean deleteElement(String elem) { if(radacina == null) return false; Nod current = radacina; Nod parent = radacina; boolean isstgChild = true; while(! current.data.equals(elem)) { parent = current; if(current.data.compareTo(elem) > 0) { isstgChild = true; current = current.stg; } else { isstgChild = false; current = current.drt; } if(current == null) return false; }

if(current.stg == null && current.drt == null) { if(current == radacina) radacina = null; else if(isstgChild) { parent.stg = null; parent.nrFiiStg = 0; } else { parent.drt = null; parent.nrFiiDrt = 0; } } else if(current.drt == null) if(current == radacina) radacina = current.stg; else if(isstgChild) parent.stg = current.stg; else parent.drt = current.stg; else if(current.stg == null) if(current == radacina) radacina = current.drt; else if(isstgChild) parent.stg = current.drt; else parent.drt = current.drt; else { Nod successor = getSuccessor(current); if(current == radacina) radacina = successor; else if(isstgChild) parent.stg = successor; else parent.drt = successor; successor.stg = current.stg; } if(radacina != null) { radacina.setNumChildsNull(); radacina.adjustNumChilds(); } repaint(); return true; } private Nod getSuccessor(Nod delNod) { Nod successorParent = delNod; Nod successor = delNod; Nod current = delNod.drt; while(current != null) { successorParent = successor; successor = current;

current = current.stg; } if(successor != delNod.drt) { successorParent.stg = successor.drt; successor.drt = delNod.drt; } return successor; } public boolean hasElements() { return radacina != null; } } /////////////////clasa Nod///////////// import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.util.*; class Nod { protected protected protected protected protected private private private private private private private private private private

String data; int nrFiiStg; int nrFiiDrt; Nod stg; Nod drt;

int latime; int inaltime; int strinaltime; int strlatime; int strAscent; int arrow; int margin; final int rounded = 4; final int ptrline = 8; final int maxLetters = 2;

/** * Class Nod constructor * @param d the data */ public Nod(String d) { data = d; stg = null; drt = null; nrFiiStg = 0; nrFiiDrt = 0; } public Nod(String d, int h, int w, int a) { data = d; stg = null;

drt = null; setMetrics(h, w, a); } public void setMetrics(int h, int w, int a) { latime = h * maxLetters; inaltime = 12 + h; strinaltime = h; strlatime = w; strAscent = a; arrow = ptrline; margin = 2; } /** * Adds a * @param d the data * @param h the inaltime * @param w the latime * @param a the ascent */ public boolean add(String o) { boolean retValue = true; if(data.equals(o)) { retValue = false; } else { if(data.compareTo(o) > 0) { if(stg == null) { stg = new Nod(o, strinaltime, strlatime, strAscent); nrFiiStg++; } else { retValue = stg.add(o); if(retValue) nrFiiStg++; } } else { if(drt == null) { drt = new Nod(o, strinaltime, strlatime, strAscent); nrFiiDrt++; } else { retValue = drt.add(o); if(retValue) nrFiiDrt++; } }

} return retValue; } public boolean findElement(String o) { boolean retValue = false; if(data.equals(o)) return true; if(data.compareTo(o) > 0) { if(stg != null) retValue = stg.findElement(o); } else { if(drt != null) retValue = drt.findElement(o); } return retValue; } public String txtInorder() { String retValue = ""; if(stg != null) retValue += stg.txtInorder(); if(data != null) retValue += "," + data; if(drt != null) retValue += drt.txtInorder(); return retValue; } public String txtPreorder() { String retValue = ""; if(data != null) retValue += "," + data; if(stg != null) retValue += stg.txtPreorder(); if(drt != null) retValue += drt.txtPreorder(); return retValue; } public String txtPostorder() { String retValue = ""; if(stg != null) retValue += stg.txtPostorder(); if(drt != null) retValue += drt.txtPostorder(); if(data != null) retValue += "," + data; return retValue; } public void setNumChildsNull()

{ nrFiiStg = -1; nrFiiDrt = -1; if(stg != null) stg.setNumChildsNull(); if(drt != null) drt.setNumChildsNull(); } public void adjustNumChilds() { if(nrFiiStg == -1) { if(stg == null) nrFiiStg = 0; else { stg.adjustNumChilds(); nrFiiStg = stg.nrFiiStg + stg.nrFiiDrt + 1; } } if(nrFiiDrt == -1) { if(drt == null) nrFiiDrt = 0; else { drt.adjustNumChilds(); nrFiiDrt = drt.nrFiiStg + drt.nrFiiDrt + 1; } } } public void inorder(Graphics g, int x, int y) { g.drawString("root", x - 12, y); g.drawLine(x, y + 2, x, y + 16); g.drawLine(x, y + 16, x - 4, y + 16 - 4); g.drawLine(x, y + 16, x + 4, y + 16 - 4); inorder(g, x, y + 16, false); } public void inorder(Graphics g, int x, int y, boolean t) { int strlatime, xn, yn; String tmpStr = data.substring(0, (data.length() < maxLetters ? data.lengt h() : maxLetters)); g.drawRoundRect(x - latime / 2, y, latime, inaltime, rounded, rounded); g.drawLine(x - latime / 2, y + inaltime - ptrline, x + latime / 2, y + ina ltime - ptrline); g.drawLine(x, y + inaltime - ptrline, x, y + inaltime); FontMetrics fm = g.getFontMetrics(); strlatime = fm.stringWidth(tmpStr); g.drawString(tmpStr, x - strlatime / 2, y + inaltime - ptrline - strAscent / 2); if(stg == null) { g.drawLine(x - latime / 2, y + inaltime - ptrline, x, y + inaltime); g.drawLine(x, y + inaltime - ptrline, x - latime / 2 + 1, y + inaltime

- 1); } else { xn = x - latime * (stg.nrFiiDrt + 1) - arrow; yn = y + inaltime + ptrline; g.drawLine(x - latime / 4, y + inaltime - ptrline / 2, xn, yn); stg.inorder(g, xn, yn, false); } if(drt == null) { g.drawLine(x + latime / 2, y + inaltime - ptrline, x, y + inaltime); g.drawLine(x, y + inaltime - ptrline, x + latime / 2 - 1, y + inaltime - 1); } else { xn = x + latime * (drt.nrFiiStg + 1) + arrow; yn = y + inaltime + ptrline; g.drawLine(x + latime / 4, y + inaltime - ptrline / 2, xn, yn); drt.inorder(g, xn, yn, false); } } public int getMinx(int x) { int xn; if(stg != null) xn = x - latime * (nrFiiStg + 1) - arrow; else xn = x - latime; return Math.min(x, xn); } public int getMaxx(int x) { int xn; if(drt != null) xn = x + latime * (nrFiiDrt + 1) + arrow; else xn = x + latime; return Math.max(x, xn); } public int getMaxy(int y) { int ystg = y, ydrt = y, yn; if(stg != null) { yn = y + inaltime + ptrline; ystg = stg.getMaxy(yn); } if(drt != null) { yn = y + inaltime + ptrline; ydrt = drt.getMaxy(yn); } return Math.max(Math.max(ydrt, ystg), y); }

public int getinaltime() { return inaltime; } } ///////////////////////////////////////////////////////// ///////////////////////graf//////////////////////// //////clasa DesenareGraf////// import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class DesenareGraf extends JFrame implements Observer { private JPanel panouNord, panouVest, panouEst, panouSud; private DeseneazaPanou1 drawArea; private JLabel statusLabel; public DesenareGraf(Subject sub) { super("Graf neorientat"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sub.registerInterest(this); panouNord = new JPanel(); panouVest = new JPanel(); panouEst = new JPanel(); panouSud = new JPanel(); drawArea = new DeseneazaPanou1(); statusLabel = new JLabel("Desen Graf"); panouSud.add(statusLabel, BorderLayout.SOUTH); Container myContainer = getContentPane(); myContainer.setLayout(new BorderLayout()); myContainer.add(panouVest, BorderLayout.NORTH); myContainer.add(drawArea,BorderLayout.CENTER); //myContainer.add(new JScrollPane(drawArea), BorderLayout.CENTER); myContainer.add(panouVest, BorderLayout.WEST); myContainer.add(panouSud, BorderLayout.SOUTH); myContainer.add(panouEst, BorderLayout.EAST); this.setBackground(Color.WHITE); this.setBounds(600,600,600,500); this.setLocationRelativeTo(null); this.setVisible(true); } public void sendNotify(Graph graf) { drawArea.deseneaza(graf);

} } ///////////////clasa DeseneazaPanou//////////// import import import import java.awt.*; java.awt.event.*; javax.swing.*; java.util.*;

public class DeseneazaPanou extends JPanel { boolean primaData; private int maxx; private int maxy; private Graph graf=null; public DeseneazaPanou() { setBackground(Color.white); primaData = true; maxx = 400; maxy = 400; repaint(); } public Dimension getPreferredSize() { return new Dimension(maxx, maxy); } public void paint(Graphics g) { super.paint(g); int x,y;

if(graf==null) { g.drawLine(20, 50,maxx-50, 50); x=maxx-70; g.drawLine(60, 20,60,maxy-100); int x_start=80; int x_end=x-20; System.out.println("x_start= "+x_start); System.out.println("x_end= "+x_end); int dist_x=(x_end-x_start)/10; y=maxy-120; int y_start=45;

for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start+i*dist_x ,y_start); } y_start=70; int y_end=y-10;

int dist_y=(y_end-y_start)/10; x_start=40; System.out.println("y_start= "+y_start); System.out.println("y_end= "+y_end); for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start ,y_start+i*dist_y); } x_start=80; y_start=70; for(int i=0;i<10;i++) for(int j=0;j<10;j++) { String sir="0"; g.drawString(sir,x_start+j*dist_x,y_start+i*dist_y); }

} else { g.drawLine(20, 50,maxx-50, 50); x=maxx-70; g.drawLine(60, 20,60,maxy-100); int x_start=80; int x_end=x-20; System.out.println("x_start= "+x_start); System.out.println("x_end= "+x_end); int dist_x=(x_end-x_start)/10; y=maxy-120; int y_start=45;

for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start+i*dist_x ,y_start); } y_start=70; int y_end=y-10;

int dist_y=(y_end-y_start)/10; x_start=40; System.out.println("y_start= "+y_start); System.out.println("y_end= "+y_end); for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start ,y_start+i*dist_y); } x_start=80; y_start=70; for(int i=0;i<10;i++) for(int j=0;j<10;j++) { String sir=String.valueOf( (char)('0'+this.graf.getEl(i ,j))); g.drawString(sir,x_start+j*dist_x,y_start+i*dist_y); }

} } public boolean deseneaza(Graph graf) { this.graf=graf; repaint(); return true; } } ///////////////////////clasa DeseneazaPanou1//////////////////// import java.awt.*; import java.awt.event.*; import javax.swing.*;

import java.util.*; public class DeseneazaPanou extends JPanel { boolean primaData; private int maxx; private int maxy; private Graph graf=null; public DeseneazaPanou() { setBackground(Color.white); primaData = true; maxx = 400; maxy = 400; repaint(); } public Dimension getPreferredSize() { return new Dimension(maxx, maxy); } public void paint(Graphics g) { super.paint(g); int x,y;

if(graf==null) { g.drawLine(20, 50,maxx-50, 50); x=maxx-70; g.drawLine(60, 20,60,maxy-100); int x_start=80; int x_end=x-20; System.out.println("x_start= "+x_start); System.out.println("x_end= "+x_end); int dist_x=(x_end-x_start)/10; y=maxy-120; int y_start=45; for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start+i*dist_x ,y_start); }

y_start=70; int y_end=y-10;

int dist_y=(y_end-y_start)/10; x_start=40; System.out.println("y_start= "+y_start); System.out.println("y_end= "+y_end); for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start ,y_start+i*dist_y); } x_start=80; y_start=70; for(int i=0;i<10;i++) for(int j=0;j<10;j++) { String sir="0"; g.drawString(sir,x_start+j*dist_x,y_start+i*dist_y); } } else { g.drawLine(20, 50,maxx-50, 50); x=maxx-70; g.drawLine(60, 20,60,maxy-100); int x_start=80; int x_end=x-20; System.out.println("x_start= "+x_start); System.out.println("x_end= "+x_end); int dist_x=(x_end-x_start)/10; y=maxy-120; int y_start=45; for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start+i*dist_x ,y_start); } y_start=70; int y_end=y-10;

int dist_y=(y_end-y_start)/10; x_start=40; System.out.println("y_start= "+y_start); System.out.println("y_end= "+y_end); for(int i=0;i<10;i++) { String sir=String.valueOf((char)('A'+i)); g.drawString(sir,x_start ,y_start+i*dist_y); } x_start=80; y_start=70; for(int i=0;i<10;i++) for(int j=0;j<10;j++) { String sir=String.valueOf( (char)('0'+this.graf.getEl(i ,j))); g.drawString(sir,x_start+j*dist_x,y_start+i*dist_y); } } } public boolean deseneaza(Graph graf) { this.graf=graf; repaint(); return true; } } ////////////////clasa Graph////////////// public class Graph { private private private private private final int MAX_VERTS=20; Vertex vertexList[]; //lista de varfuri int adjMat[][]; //matricea de adiacenta int nVerts; //nr curent de muchii static int i;

public Graph(int nrVf) { vertexList=new Vertex[MAX_VERTS]; adjMat=new int[MAX_VERTS][MAX_VERTS]; i=0; nVerts=nrVf;

for(int i=0;i<MAX_VERTS;i++) for(int j=0;j<MAX_VERTS;j++) adjMat[i][j]=0; } public void addVertex(char label) { vertexList[i++]=new Vertex(label); } public void addEdge(int start,int end) { adjMat[start][end]=1; adjMat[end][start]=1; } public int getNrVf() { return this.nVerts; } public int [][] getMatr() { return this.adjMat; } public void displayVertex(int v) { System.out.println(vertexList[v]); } public int getEl(int x,int y) { return this.adjMat[x][y]; } } //////////////////clasa MatriceAdiacenta//////// import javax.swing.*; import java.awt.*; public class MatriceAdiacenta extends JFrame implements Observer{ private JPanel panouNord, panouVest, panouEst, panouSud; static DeseneazaPanou drawArea; private JLabel statusLabel; public MatriceAdiacenta(Subject sub) { super("Matrice adiacenta"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sub.registerInterest(this); panouNord = new JPanel(); panouVest = new JPanel(); panouEst = new JPanel();

panouSud = new JPanel(); drawArea = new DeseneazaPanou(); statusLabel = new JLabel("Matrice de adiacenta"); panouSud.add(statusLabel, BorderLayout.SOUTH); Container myContainer = getContentPane(); myContainer.setLayout(new BorderLayout()); myContainer.add(panouVest, BorderLayout.NORTH); myContainer.add(drawArea,BorderLayout.CENTER); //myContainer.add(new JScrollPane(drawArea), BorderLayout.CENTER); myContainer.add(panouVest, BorderLayout.WEST); myContainer.add(panouSud, BorderLayout.SOUTH); myContainer.add(panouEst, BorderLayout.EAST); this.setBackground(Color.WHITE); this.setBounds(400,400,400,400); this.setLocationRelativeTo(null); this.setVisible(true); } public void sendNotify(Graph graf) { drawArea.deseneaza(graf); } } ///////////////clasa Observer////////////////////// public interface Observer { public void sendNotify(Graph graf); } //////////////clasa Subiect//////////// import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; public class Subiect extends JFrame implements Subject { private private private private private private Vector observers; JPanel panel1,panel2,panel3,panel; JLabel label,lstart,lend; JTextField editare,start,end; JButton genereaza; Box box;

private Graph graf; private MatriceAdiacenta matr; private DesenareGraf desen; public Subiect(int nr_Vf) { super("Graf neorientat"); observers=new Vector();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); graf=new Graph(nr_Vf); box=new Box(BoxLayout.Y_AXIS); panel1=new JPanel(new FlowLayout()); panel2=new JPanel(new FlowLayout()); panel3=new JPanel(new FlowLayout()); label=new JLabel("Numarul de noduri: "); lstart=new JLabel("start:"); lend=new JLabel(" end:"); editare=new JTextField(5); editare.setBackground(Color.WHITE); editare.setHorizontalAlignment(JTextField.LEFT); editare.setEditable(false); editare.setText(Integer.toString(nr_Vf)); start=new JTextField(10); start.setBackground(Color.WHITE); start.setHorizontalAlignment(JTextField.LEFT); end=new JTextField(10); end.setBackground(Color.WHITE); end.setHorizontalAlignment(JTextField.LEFT); panel1.add(label); panel1.add(editare); panel2.add(lstart); panel2.add(start); panel3.add(lend); panel3.add(end); box.add(panel1); box.add(Box.createVerticalStrut(30)); box.add(panel2); box.add(panel3); Ascultator asc=new Ascultator(); getContentPane().add(box); JPanel panel=new JPanel(); genereaza=new JButton("Genereaza"); genereaza.addActionListener(asc); panel1.add(genereaza,BorderLayout.SOUTH); getContentPane().add(panel1,BorderLayout.SOUTH); matr=new MatriceAdiacenta(this); desen=new DesenareGraf(this); setBounds(300,300,300,300); this.pack(); this.setLocationRelativeTo(null); this.setVisible(true);

} public class Ascultator implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Genereaza")) { String s1,s2; s1=start.getText(); start.setText(""); s2=end.getText(); end.setText(""); int st,en; if(s1.length()>2 s2.length()>2 s2.length()==0) { JOptionPane.showMessageDialog(null,"Date invalide","Mesaj",JOptionPane.ERROR_MESSAGE); System.exit(1); } st=(Integer.parseInt(s1)); en=(Integer.parseInt(s2)); if(st>10 en>10) System.exit(0); System.out.println("\nstart= "+st); System.out.print("end= "+en); graf.addEdge(st,en); notifyObservers(); s1.length()==0

} } } private void notifyObservers() { for(int i=0;i<observers.size();i++) ((Observer)observers.elementAt(i)).sendNotify(graf); } public void registerInterest(Observer obs) { observers.addElement(obs); } public void removeInterest(Observer obs) { observers.remove(obs); } public static void main(String[] args) {

new Subiect(10); } } //////////////clasa Subject////////// public interface Subject { public void registerInterest(Observer obs); public void removeInterest(Observer obs); } //////////////////clasa Vertex////////////// public class Vertex { public char label; // label (e.g. 'A') public boolean wasVisited; public Vertex(char lab) // constructor { label = lab; wasVisited = false; } // sf clasei } ///////////////////////////////////////// ///////////transormare de baza//////////// import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public class Baza2Transformer implements Transformer { int numar; @SuppressWarnings("unchecked") List listenerList = new ArrayList(); @SuppressWarnings("unchecked") public void addNumarChangeListener(NumarChangeListener listener) { listenerList.add(listener); } public void setNumar(int numar) { this.numar=numar; for(Object o:listenerList) { NumarChangeListener listener = (NumarChangeListener) o; listener.numarChanged(numar); } } public String toString () { return Integer.toBinaryString(numar); }

public NumarChangeListener createOwnListener() { return new ListenerBaza2(); } public class ListenerBaza2 implements NumarChangeListener { public void numarChanged(int numar) { Baza2Transformer.this.numar=numar; } } } ................................................ import java.util.ArrayList; import java.util.List; public class Baza3Transformer implements Transformer { int numar; List listenerList = new ArrayList(); @SuppressWarnings("unchecked") public void addNumarChangeListener(NumarChangeListener listener) { listenerList.add(listener); } public void setNumar(int numar) { this.numar=numar; for(Object o:listenerList) { NumarChangeListener listener = (NumarChangeListener) o; listener.numarChanged(numar); } } public String toString () { return Integer.toString(numar,3); } public NumarChangeListener createOwnListener() { return new ListenerBaza3(); } public class ListenerBaza3 implements NumarChangeListener { public void numarChanged(int numar) { Baza3Transformer.this.numar=numar; } } } .......................................... import java.util.ArrayList;

import java.util.List;

public class Baza4Transformer implements Transformer { int numar; List listenerList = new ArrayList(); public void addNumarChangeListener(NumarChangeListener listener) { listenerList.add(listener); } public void setNumar(int numar) { this.numar=numar; for(Object o:listenerList) { NumarChangeListener listener = (NumarChangeListener) o; listener.numarChanged(numar); } } public String toString () { return Integer.toString(numar,4); } public NumarChangeListener createOwnListener() { return new ListenerBaza4(); } public class ListenerBaza4 implements NumarChangeListener { public void numarChanged(int numar) { Baza4Transformer.this.numar=numar; } } } .......................................... public class Main { public static void main(String[] args) { Transformer trans2 = TransformerFactory.createTransformer(2); Transformer trans3 = TransformerFactory.createTransformer(3); Transformer trans4 = TransformerFactory.createTransformer(4); NumarChangeListener listener2 = trans2.createOwnListener(); NumarChangeListener listener3 = trans3.createOwnListener(); NumarChangeListener listener4 = trans4.createOwnListener(); trans2.addNumarChangeListener(listener3); trans2.addNumarChangeListener(listener4);

trans3.addNumarChangeListener(listener2); trans3.addNumarChangeListener(listener4); trans4.addNumarChangeListener(listener2); trans4.addNumarChangeListener(listener3); trans3.setNumar(5); System.out.println("Numarul System.out.println("Numarul System.out.println("Numarul System.out.println("Numarul trans2.setNumar(13); System.out.println("Numarul System.out.println("Numarul System.out.println("Numarul System.out.println("Numarul } } ......................... public interface NumarChangeListener { void numarChanged(int numar); } ........................ public interface Transformer { public void setNumar(int numar); public void addNumarChangeListener(NumarChangeListener listener); public NumarChangeListener createOwnListener(); } ........................ public class TransformerFactory { public static Transformer createTransformer(int baza) { switch(baza) { case 2: return new Baza2Transformer(); case 3: return new Baza3Transformer(); case 4: return new Baza4Transformer(); default: throw new RuntimeException(); } } } initial: 5"); in baza 2: " + trans2.toString()); in baza 3: " + trans3.toString()); in baza 4: " + trans4.toString()); initial: 13"); in baza 2: " + trans2.toString()); in baza 3: " + trans3.toString()); in baza 4: " + trans4.toString());

You might also like