miercuri, 6 iunie 2012

Lista

import javax.swing.*;
import java.awt.*;
public class Console {
   
   
      
    public static void run(JApplet applet,int latime,int inaltime)
    {
        JFrame frame=new JFrame("Aplicatie -> Lista simplu inlatuita");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(latime,inaltime);
        frame.getContentPane().add(applet);
        applet.init();
        applet.start();
        frame.pack();
        frame.setVisible(true);
       
    }
   
}
///////clasa DeseneazaPanou//////////
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class DeseneazaPanou extends Canvas{

       private int maxx;
       private int maxy;
       static int pozitionare=1;
      
       public DeseneazaPanou()
       {
          setBackground(Color.WHITE);
          maxx = 600;
          maxy = 400;
         
          repaint();
       }
   
       public Dimension getPreferredSize()
       {
          return new Dimension(maxx, maxy);
       }
      

       public void paint(Graphics g)
       {
   
         if(Lista.list.size()==0)
             {
             int x = 45;
             int y = 130;
             g.drawString("Nod", x,y);
             g.drawLine(x+11, y + 4, x+11, y + 20);
             g.drawLine(x+11, y +20, x + 7, y + 20 - 4);
             g.drawLine(x+11, y +20, x + 15, y + 20 - 4);
             g.drawString("null", x, y + 35);
           
             }
         else
         {       
                 int x1=35,y1=160;
                 int lung=45,lat=25;
   
                
         for(int i=0;i         {
           
             g.drawRect(x1, y1, lung, lat);   
             g.drawString(((Object)Lista.list.get(i)).toString(),x1+15,y1+18);
           
             g.drawLine(x1+lung, y1 + lat/2, x1+lung+25, y1 + lat/2);
             g.drawLine(x1+lung+16, y1+lat/2+5, x1+lung+25, y1+lat/2);
             g.drawLine(x1+lung+16, y1+lat/2-5, x1 + lung + 25, y1 +lat/2);   
             x1+=lung+25;
           
         } 
      
         g.drawString("null", x1+3, y1 + 15);
        
        
         if(pozitionare==1)
         {
             int x = 45;   
             int y = 130;
             g.drawString("Nod", x,y);
             g.drawLine(x+11, y + 4, x+11, y + 20);
             g.drawLine(x+11, y +20, x + 7, y + 20 - 4);
             g.drawLine(x+11, y +20, x + 15, y + 20 - 4);
         } 
         else
         {
             System.out.print("Flag");
             int x = 45+(lung+25)*(pozitionare-1);   
             int y = 130;
             g.drawString("Nod", x,y);
             g.drawLine(x+11, y + 4, x+11, y + 20);
             g.drawLine(x+11, y +20, x + 7, y + 20 - 4);
             g.drawLine(x+11, y +20, x + 15, y + 20 - 4);
                
         }
        
         }
            }
   
       public void repozitionareInceput()
       {
           pozitionare=1;
           repaint();
       }
      
       public void trecereUrmNod(LinkedList list,ListIterator it)
       {
       
           if(list.size()!=0)
           {
           
                    
         if(pozitionare              
               {
                   pozitionare++;
                System.out.println("Pozitionare: "+pozitionare);
           
               }
                      else
                           pozitionare=1;
             
           }
           else
               pozitionare=1;
           repaint();
          
       }
      
      
       public boolean addElementInainte(LinkedList list,ListIterator it,String s)
       {
         System.out.print("\nAm e23423423423\n");
        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           {
           
               System.out.println("list("+i+")= "+list.get(i));
           }
          repaint();
          return true;
       }
      
       public boolean addElementDupa ( LinkedList list,ListIterator it,String s)
       {
         
               it.add(s);
   
               for(int i=0;i               {
                  
                   System.out.println("list("+i+")= "+list.get(i));
                  
               }
          repaint();
          return true;
       }
         
       public boolean deleteElement(LinkedList list,ListIterator it)
       {
         if(list==null)
              return false;
         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              System.out.println("list("+i+")= "+list.get(i));
          
          repaint();
          return true;
       }
   
       public boolean hasElements(LinkedList list)
       {
          return list!=null;
       }
      
      
}
/////////////clasa Lista//////////
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Lista extends JApplet {
   
    static LinkedList list=new LinkedList();
    ListIterator it=list.listIterator();
    private JPanel panouNord, panouVest, panouEst, panouSud;
    private JPanel subPanouSud;

    protected JButton repozIncLista,trecereUrmNod,
                      stergeNod,insInainte,insDupa;
   
    protected JTextField textField;
    protected JLabel statusLabel;
   
    private DeseneazaPanou drawArea;
    public static final int latime = 800, inaltime = 780;
   
     public void checkButtons()
       {
          boolean enabled = drawArea.hasElements(list);
          stergeNod.setEnabled(enabled);
       }
     public class Ascultator implements ActionListener {

            public void actionPerformed(ActionEvent e) {
               
               
                String s=e.getActionCommand();
                if(s.equals("Ins Dupa"))
                {
                    textField.setEditable(true);
                    System.out.println("Am fost pe aici");
                    String sir=textField.getText();
                    if(sir!=null)
                        {
                            System.out.println("\nSirul inserat:::"+sir);
                            drawArea.addElementDupa(list, it, sir);
                            Lista.this.checkButtons();
                            textField.setText("");
                            doLayout();
                        }
                }   
                else
                     if(s.equals("Ins inainte"))
                     {
                         textField.setEditable(true);
                            System.out.println("Am fost pe aici 2");
                            String sir=textField.getText();
                            if(sir!=null)
                                {
                                    System.out.println("\nSirul inserat:::"+sir);
                                    drawArea.addElementInainte(list, it, sir);
                                    Lista.this.checkButtons();
                                    textField.setText("");
                                    doLayout();
                                }
                        }   
                     else
                          if(s.equals("Sterge Nod"))
                          {
                              textField.setEditable(false);
                              String value = JOptionPane.showInputDialog(Lista.this,"Sterge Element");
                                 System.out.print("Value= "+value);
                                 if(value!=null && value.equals("")==false)
                                 {
                                     if(list.contains(value))
                                     it=list.listIterator(list.indexOf(value));
                                     if(!drawArea.deleteElement(list,it))
                                         JOptionPane.showMessageDialog(Lista.this,
                                         "Elementul nu a fost gasit ",
                                         "Sterge Element", JOptionPane.PLAIN_MESSAGE);
                                   
                                 }
                                 Lista.this.checkButtons();
                          }
        }
     }
     public class Ascultator1 implements ActionListener {

            public void actionPerformed(ActionEvent e) {
   
                String s=e.getActionCommand();
   
            if(s.equals("Repoz inc"))
            {
                textField.setVisible(false);
                 JOptionPane.showMessageDialog(Lista.this, "Repozitionare la inc listei", "Repozitionare",
                           JOptionPane.PLAIN_MESSAGE);
                drawArea.repozitionareInceput();
                textField.setVisible(true);
            }
            else
                 if(s.equals("Trecere urm nod"))
                 {
                    System.out.println("\nddddddddddddddddddddddd");
                     textField.setEditable(false);
                     JOptionPane.showMessageDialog(Lista.this, "Repozitionare la urm", "Nodul urmator",
                               JOptionPane.PLAIN_MESSAGE);
                     drawArea.trecereUrmNod(list, it);
                     textField.setEditable(true);
                 }
            }
     }
   
    public void init()
    {  
        statusLabel=new JLabel("Lista simplu inlatuita");
       
        panouNord = new JPanel();
        panouVest = new JPanel();
        panouEst  = new JPanel();
        panouSud  = new JPanel();
       
        drawArea = new DeseneazaPanou();
       
        textField=new JTextField("",15);
        textField.setEditable(true);
       
        repozIncLista=new JButton("Repoz inc");
        //repozIncLista.setMnemonic('R'); // asociere de tasta de apelare rapida
        Ascultator1 asc1=new Ascultator1();
        repozIncLista.addActionListener(asc1);
     
        trecereUrmNod=new JButton("Trecere urm nod");
        //trecereUrmNod.setMnemonic('U'); // asociere de tasta de apelare rapida
        trecereUrmNod.addActionListener(asc1);
   
          Ascultator asc=new Ascultator();
         
          stergeNod = new JButton("Sterge Nod");
          stergeNod.addActionListener(asc);
          stergeNod.setEnabled(false);
         
          insInainte = new JButton("Ins inainte");
          insInainte.addActionListener(asc);
         
          insDupa = new JButton("Ins Dupa");
          insDupa.addActionListener(asc);
         
       
         
         
          subPanouSud = new JPanel();
          subPanouSud.setLayout(new FlowLayout());
          subPanouSud.add(repozIncLista);
          subPanouSud.add(trecereUrmNod);
          subPanouSud.add(stergeNod);
          subPanouSud.add(insInainte);
          subPanouSud.add(insDupa);
          subPanouSud.add(textField);
         
          panouSud.setLayout(new BorderLayout());
          panouSud.add(subPanouSud, BorderLayout.CENTER);
          panouSud.add(statusLabel, BorderLayout.SOUTH);

         
          Container container = getContentPane();
          container.setLayout(new BorderLayout());
       //   container.add(panouNord, BorderLayout.NORTH);
          container.add(new JScrollPane(drawArea), BorderLayout.CENTER);
          container.add(panouVest, BorderLayout.WEST);
          container.add(panouSud, BorderLayout.SOUTH);
          container.add(panouEst, BorderLayout.EAST);
          container.add(panouNord, BorderLayout.NORTH);
          setSize(latime, inaltime);
          setVisible(true);      
    }

     public static void main(String[] args)
    {
           Console.run(new Lista(),latime,inaltime);
    }
}

Niciun comentariu:

Trimiteți un comentariu