Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Java by Chomik ( 16 years ago )
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

/**
 * Klasa <code> Osoba </code> implementuje interfejs Comparable i przedefiniowuje nastepujace metody
 *<ul>
 * <li> toString, ktora zwraca reprezentacje tekstowa obiektu Osoba w postaci lancucha 'imie nazwisko',
 * <li> hashCode, ktora zwraca wartosc kodu mieszania obiektu Osoba obliczona na
 *      podstawie wartości kodu mieszania atrybutu nazwisko i atrybutu imie,
 * <li> equals, ktora porownuje obiekty klasy Osoba (zwraca wartosc true dla
 *      obiektow reprezentujacych osoby o tym samym nazwisku i imieniu).
 * <li> compareTo, ktora porownuje porzadek obiektów (uporzadkowanie alfabetyczne osob
 *      wedlug imienia i nazwiska).
 *</ul>
 */
class Osoba  implements Comparable{
 //zmienne przechowujace imie i nazwisko
 private String imie;
 private String nazwisko;

 //konstruktor
 public Osoba (String imie, String nazwisko)
 {
  this.imie = imie;
  this.nazwisko = nazwisko;
 }

 /**
  * przedefiniowana metoda toString
  * @return ciag 'imie nazwisko'
  */
 @Override public String toString()
 {
  return imie + " " + nazwisko;
 }

 /**
  * przedefiniowana metoda hashCode, ktora sumuje hash cody imienia i nazwiska
  * @return wartosc sumy hash codow
  */
 @Override public int hashCode()
 {
  int mieszaj = 17;
  mieszaj = 31*mieszaj + imie.hashCode();
  mieszaj = 31*mieszaj + nazwisko.hashCode();
  return mieszaj;
 }

 /**
  * przedefiniowana metoda equals, ktora sprawdza czy ciagi sa takie same
  * na podstawie hash codow
  * @return wartosc logiczna okreslajaca rownosc ciagow (true/false)
  */
 @Override public boolean equals(Object o)
 {
  //sprawdzenie czy obiekt jest wlasciwego typu
  if(!(o instanceof Osoba))
   return false;
  //porownanie hash codow
  else if (this.hashCode() == o.hashCode())
   return true;
  else
   return false;
 }
 /**
  * przedefiniowana metoda compareTo, ktora porownuje ciagi
  * @return wartosc -1/1/0 (mniejszy/wiekszy/taki sam)
  */
 @Override public int compareTo(Object o){
  //imie i nazwisko jest 'mniejsze' lub 'wieksze' - kolejnosc wedlug hash codow
  if(this.hashCode() < o.hashCode())
   return -1;
  else if(this.hashCode() > o.hashCode())
   return 1;
  //imie i nazwisko jest takie samo
  else
   return 0;
 }
}

/**
 * Klasa <code> Kolekcje </code> implementuje kolekcje oraz metody ich wyswietlania
 */
class KolekcjeOsoba extends JFrame implements ActionListener
{
 //utworzenie zmiennych opisow pol, pol tekstowych oraz przyciskow
 JLabel etykietaImie= new JLabel ("Imie:");
    JTextField imieBox = new JTextField(10);
    JLabel etykietaNazwisko= new JLabel ("Nazwisko:");
    JTextField nazwiskoBox = new JTextField(15);
    JButton zapisz=new JButton("Zapisz");
    JButton usun=new JButton("Usun");
    JButton wyczysc=new JButton("Wyczysc");
    JCheckBox wyswietlAuto = new JCheckBox("Wyswietl automatycznie");
    JButton wyswietl=new JButton("Wyswietl");

    //utworzenie kolekcji poszczegolnych typow
    Vector<Osoba> vector = new Vector<Osoba>();
    ArrayList<Osoba> arrayList = new ArrayList<Osoba>();
    LinkedList<Osoba> linkedList = new LinkedList<Osoba>();
    HashSet<Osoba> hashSet = new HashSet<Osoba>();
    TreeSet<Osoba> treeSet = new TreeSet<Osoba>();

    //utworzenie obiektow klasy WidokKolekcji do wyswietlania poszczegolnych kolekcji
    WidokKolekcji widokVector;
    WidokKolekcji widokArrayList;
    WidokKolekcji widokLinkedList;
    WidokKolekcji widokHashSet;
    WidokKolekcji widokTreeSet;

 //konstruktor
    KolekcjeOsoba()
    {
     //opis okienka dialogowego
     super("Osoba");
      //opis dzialania w momencie wcisniecia przycisku zamkniecia
      setSize(650,380);
      //umieszczenie w oknie opisow pol, pol tekstowych oraz przyciskow
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JPanel panel= new JPanel();
      panel.add(etykietaImie);
      panel.add(imieBox);
      panel.add(etykietaNazwisko);
      panel.add(nazwiskoBox);
      zapisz.addActionListener(this);
      panel.add(zapisz);
      usun.addActionListener(this);
      panel.add(usun);
      wyczysc.addActionListener(this);
      panel.add(wyczysc);
        wyswietlAuto.addActionListener(this);
        panel.add(wyswietlAuto);
      wyswietl.addActionListener(this);
      panel.add(wyswietl);

        //utworzenie pol wyswietlajacych zawartosc kolekcji
        widokVector = new WidokKolekcji(125, 150, "vector:");
        panel.add(widokVector);
        widokArrayList = new WidokKolekcji(125, 150, "arrayList:");
        panel.add(widokArrayList);
        widokLinkedList = new WidokKolekcji(125, 150, "linkedList:");
        panel.add(widokLinkedList);
        widokHashSet = new WidokKolekcji(125, 150, "hash Set:");
        panel.add(widokHashSet);
        widokTreeSet = new WidokKolekcji(125, 150, "tree Set:");
        panel.add(widokTreeSet);


      setContentPane(panel);
      setVisible(true);
    }
 /**
  * Metoda umozliwia operacje na kolejnych kolekcjach a takze
  * wyswietlanie wszystkich elementow w widoku kolekcji.
  */
 public void actionPerformed (ActionEvent evt)
    {
     //zmienne pomocnicze typu String
     String sa, sb;

     //utworzenie obiektu klasy Osoba
     Osoba osoba;

     //zmienna obiektowa zrodlo - do obslugi klikniecia przyciskow
     Object zrodlo = evt.getSource();

     //operacje wykonywane jesli Uzytkownik skorzystał z przycisku 'zapisz' - zapis imienia i nazwiska
     if (zrodlo==zapisz)
        {
         //wpisanie do zmiennych typu String zawartosci pol tekstowych
         sa = imieBox.getText();
            sb = nazwiskoBox.getText();
            //wpisanie danych do zmiennej osoba
            osoba = new Osoba(sa,sb);
            //jesli pole jest niepuste
            if (!osoba.equals(""))
            {
             //dodanie danych do kolejnych kolekcji
             vector.add(osoba);
                arrayList.add(osoba);
                linkedList.add(osoba);
                hashSet.add(osoba);
                treeSet.add(osoba);
            }
        }
        //operacje wykonywane jesli Uzytkownik skorzystał z przycisku 'wyczysc' - czyszczenie kolekcji
        else if (zrodlo==wyczysc)
        {
         //usuwanie wszystkich danych z kolejnych kolekcji
         vector.clear();
         arrayList.clear();
            linkedList.clear();
            hashSet.clear();
            treeSet.clear();

        }
        //operacje wykonywane jesli Uzytkownik skorzystał z przycisku 'usun' - usuwanie imienia i nazwiska
        else if (zrodlo==usun)
        {
         sa = imieBox.getText();
            sb = nazwiskoBox.getText();
            osoba = new Osoba(sa,sb);
            //usuwanie danych z kolekcji
            vector.remove(osoba);
            vector.trimToSize();
            arrayList.remove(osoba);
            arrayList.trimToSize();
            linkedList.remove(osoba);
            hashSet.remove(osoba);
            treeSet.remove(osoba);
        }

        /*
         * operacje wykonywane jesli Uzytkownik skorzystał z przycisku
         * 'wyswietl' lub zaznaczyl automatyczne wyswietlanie
         */
        if((zrodlo==wyswietl) || (wyswietlAuto.isSelected()))
        {
         //utworzenia iteratora
         Iterator iterator;
         //wyczyszczenie kolekcji
         widokVector.clear();
         widokArrayList.clear();
         widokLinkedList.clear();
         widokHashSet.clear();
         widokTreeSet.clear();

            //utworzenie iteratora kolekcji vector
            iterator = vector.iterator();
            //dopoki nie skoncza sie dane
            while(iterator.hasNext())
            {
             //wpisywanie do okna widoku kolekcji vector poszczegolnych danych
             osoba = (Osoba)iterator.next();
             widokVector.addItem(osoba.toString());
            }

            //utworzenie iteratora kolekcji arrayList
            iterator = arrayList.iterator();
            while(iterator.hasNext())
            {
             //wpisywanie do okna widoku kolekcji arrayList poszczegolnych elementow
             osoba = (Osoba)iterator.next();
             widokArrayList.addItem(osoba.toString());
            }

            //utworzenie iteratora kolekcji linkedList
            iterator = linkedList.iterator();
            while(iterator.hasNext())
            {
             //wpisywanie do okna widoku kolekcji linkedList poszczegolnych elementow
             osoba = (Osoba)iterator.next();
             widokLinkedList.addItem(osoba.toString());
            }

            //utworzenie iteratora kolekcji hashSet
            iterator = hashSet.iterator();
            while(iterator.hasNext())
            {
             //wpisywanie do okna widoku kolekcji hashSet poszczegolnych elementow
             osoba = (Osoba)iterator.next();
             widokHashSet.addItem(osoba.toString());
            }

            //utworzenie iteratora kolekcji treeSet
            iterator = treeSet.iterator();
            while(iterator.hasNext())
            {
             //wpisywanie do okna widoku kolekcji treeSet poszczegolnych elementow
             osoba = (Osoba)iterator.next();
             widokTreeSet.addItem(osoba.toString());
            }

        }
    }
    /**
    * Metoda wywoluje okno kolekcji
     */
     public static void main(String arg[])
    {
     new  KolekcjeOsoba();
    }
 }

 /**
  * Klasa implementuje metody widoku kolekcji
  */
class WidokKolekcji extends JScrollPane
{
    private JList lista;
    private DefaultListModel modelListy;

    WidokKolekcji(int szerokosc, int wysokosc, String opis)
    {
     super();
     modelListy = new DefaultListModel();
     lista = new JList(modelListy);
     setViewportView(lista);
     setPreferredSize(new Dimension(szerokosc, wysokosc));
     setBorder(BorderFactory.createTitledBorder(opis));
    }

    void clear()
    {
     modelListy.clear();
    }

    void addItem(Object obj)
    {
     modelListy.addElement(obj);
    }
}

 

Revise this Paste

Your Name: Code Language: