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