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 initial: 5");
System.out.println("Numarul in baza 2: " + trans2.toString());
System.out.println("Numarul in baza 3: " + trans3.toString());
System.out.println("Numarul in baza 4: " + trans4.toString());
trans2.setNumar(13);
System.out.println("Numarul initial: 13");
System.out.println("Numarul in baza 2: " + trans2.toString());
System.out.println("Numarul in baza 3: " + trans3.toString());
System.out.println("Numarul in baza 4: " + trans4.toString());
}
}
.........................
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();
}
}
}
Field of Dreams
joi, 7 iunie 2012
Arbore JApplet
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 Element");
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
*/
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
*/
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
*/
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
*/
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 String data;
protected int nrFiiStg;
protected int nrFiiDrt;
protected Nod stg;
protected Nod drt;
private int latime;
private int inaltime;
private int strinaltime;
private int strlatime;
private int strAscent;
private int arrow;
private int margin;
private final int rounded = 4;
private final int ptrline = 8;
private 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.length() : maxLetters));
g.drawRoundRect(x - latime / 2, y, latime, inaltime, rounded, rounded);
g.drawLine(x - latime / 2, y + inaltime - ptrline, x + latime / 2, y + inaltime - 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;
}
}
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 Element");
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
String
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
String
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
String
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
true
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 String data;
protected int nrFiiStg;
protected int nrFiiDrt;
protected Nod stg;
protected Nod drt;
private int latime;
private int inaltime;
private int strinaltime;
private int strlatime;
private int strAscent;
private int arrow;
private int margin;
private final int rounded = 4;
private final int ptrline = 8;
private 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.length() : maxLetters));
g.drawRoundRect(x - latime / 2, y, latime, inaltime, rounded, rounded);
g.drawLine(x - latime / 2, y + inaltime - ptrline, x + latime / 2, y + inaltime - 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;
}
}
Ceas
////////////////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 pt. 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) {
// parametrul fractie e o fractie(0.0 - 1.0) din cale
// in sensul acelor de ceasornic de la 12. metodele din Graphics2D ut. radiani
// ..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; // al doilea ac se extinde catre linia din afara a orizontului
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 java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import 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(); //ceasul incepe sa fct
}
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());
System.out.println(a);
if(a>12)
{
JOptionPane.showMessageDialog(this,
"numar prea mare",
"setare ora", JOptionPane.PLAIN_MESSAGE);
}
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);
}
}
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 pt. 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) {
// parametrul fractie e o fractie(0.0 - 1.0) din cale
// in sensul acelor de ceasornic de la 12. metodele din Graphics2D ut. radiani
// ..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; // al doilea ac se extinde catre linia din afara a orizontului
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 java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import 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(); //ceasul incepe sa fct
}
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());
System.out.println(a);
if(a>12)
{
JOptionPane.showMessageDialog(this,
"numar prea mare",
"setare ora", JOptionPane.PLAIN_MESSAGE);
}
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);
}
}
Coada
public class ArrayCoada implements Coada {
// declaratie campuri
/**
* TODO// de modificat dimensiunea la 5; De facut un program care testeaza
* funtiile push pop si peek atat cazurile corecte cat si cele exceptionale.
* In caz de exceptie se vor prinde exceptiile si se vor afisa la consola.
*/
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, CoadaInvalidArgumentException
{
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 goala
* va returna valoarea null
*/
public T poll()
{
if (isEmpty())
{
return null;
}
else
{
T b;
b = elemente[start];
for(int i=start;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 elemente[i]=elemente[i+1];
end--;
return b;
}
}
/**
* se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa din
* 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 din
* stiva. In mod similar se genereaza StackEmptyException sau se returneaza
* 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
{
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 java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
public class GUIMain
{
Coada queue = new ArrayCoada ();
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 StackEmptyException
{
System.out.println("Buton varf");
// sau peek
labelVarf.setText("Varful este: "+queue.element());
}
}
private class GolireAction implements ActionListener
{
public void actionPerformed(ActionEvent arg0)// throws StackEmptyException
{
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());
}
}
}
// declaratie campuri
/**
* TODO// de modificat dimensiunea la 5; De facut un program care testeaza
* funtiile push pop si peek atat cazurile corecte cat si cele exceptionale.
* In caz de exceptie se vor prinde exceptiile si se vor afisa la consola.
*/
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, CoadaInvalidArgumentException
{
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 goala
* va returna valoarea null
*/
public T poll()
{
if (isEmpty())
{
return null;
}
else
{
T b;
b = elemente[start];
for(int i=start;i
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--;
return b;
}
}
/**
* se obtine valoarea din varful stivei fara ca aceasta sa fie stearsa din
* 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 din
* stiva. In mod similar se genereaza StackEmptyException sau se returneaza
* 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
{
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 java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
public class GUIMain
{
Coada
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 StackEmptyException
{
System.out.println("Buton varf");
// sau peek
labelVarf.setText("Varful este: "+queue.element());
}
}
private class GolireAction implements ActionListener
{
public void actionPerformed(ActionEvent arg0)// throws StackEmptyException
{
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());
}
}
}
Abonați-vă la:
Postări (Atom)