Sortowanie pozycji na liście wg dat

0

Witam

Mam pewien problem:) Otóż stworzyłem w javie w programie okienkowym listę, do której dodaję za pomocą buttona "zapisz" kolejne pozycje.
Mam także button "usun", który chciałbym, aby odpowiadał za usuwanie pozycji z listy zaznaczonej za pomocą kursora myszy (tzn. klikam na liście na wybraną pozycję, później na przycisk "usun" i usuwa mi wcześniej zaznaczoną pozycję na liście).

Dodałem implementację MouseListener,
dodałem w void init lista.addMouseListener(this)

ponadto mam:

bUsun.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            usun();
        }
    });

private void usun(){
}

public void mousePressed(MouseEvent e) {
}

co powpisywać w tych dwóch ostatnich metodach, żeby zaczęło działać?

0

Ale po co Ci do tego mouseListener? Wystarczy, że w ActionListener'e pobierzesz indeks zaznaczonego elementu listy i przekażesz go do metody usuń i tam go usuniesz. Wszystko znajdziesz w dokumentacji

0

Ok, dzięki za powyższą podpowiedź:) jednak okazało się to prostsze niż myślałem, bez zbędnych komplikacji za które się brałem:P

ale nadszedł kolejny problem:) mam takie coś:

private void sprawdzenie(){
Calendar c = Calendar.getInstance();
dateNow = String.format("%td-%<tm-%<tY", System.currentTimeMillis());
hourNow = String.format("%tH:%<tM", System.currentTimeMillis());
for(int i=0; i<listaData.getItemCount(); i++){
pozycja1 = listaData.getItem(i);
pozycja2 = listaCzas.getItem(i);
pozycja3 = listaZadanie.getItem(i);
}
if((pozycja1.equals(dateNow))&&(pozycja2.equals(hourNow))){
JOptionPane.showMessageDialog(null, pozycja3);
}
}

po uruchomieniu programu, klikam przycisk i rusza powyższe sprawdzanie tzn. sprawdza aktualną datę i godzinę, porównuje ją odpowiednio z pozycja1 i pozycja2 i jeśli się zgadza, to wyświetla tekst z pozycja3.

wszystko działa tylko np. mam ustalone zadanie na 05-04-2011 i godz. 14:55
jeśli jest godzina 14:54 i naciskam przycisk, który powoduje działanie tej metody nic się nie dzieje, dopiero gdy zegar przeskoczy na 14:55 i po raz kolejny nacisnę przycisk, to wyświetla się wiadomość z pozycja3.

a chodziłoby mi o to, żeby tylko raz nacisnąć przycisk i żeby metoda ta działała w tle i żeby po każdej kolejnej minucie pobierała aktualną datę i czas i sprawdzała to od początku bez konieczności ręcznego wciskania guzika co minutę.

0

Poczytaj o timer'ach - bardzo proste w realizacji to jest. http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/Timer.html

0

Ok, zrobiłem to na podstawie Timera i mój program już działa:) Teraz jednak przyszedł czas na zmiany kosmetyczne:)

Tzn. gdy dodaję kolejne zadania do listy, to chciałbym, aby zadania te były porządkowane chronologicznie, tzn. nie wg kolejności dodania, a wg daty tych zadań.

I druga sprawa. Przy wybieraniu dat z pól choice odp. dzień, miesiąc, rok na starcie programu wszystkie te pozycje ustawione są na choice(0). Jest jakaś możliwość, żeby pobrać aktualną datę i później te pola ustawić wedle tej daty tzn. mamy np. 08-04-2011, to żeby te pola wyświetlały się kolejno 08 04 2011, a nie a jak normalnie 01 01 2011.

Tak w ogóle to wielkie dzięki za dotychczasowe porady:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1