Avatar billede ChinaPete Nybegynder
11. juni 2010 - 12:55 Der er 5 kommentarer

Arrays og JTable

Hej Eksperter :)

Jeg sidder og rykker de sidste hår ud af hovedet på mig selv over den her JTable som ikke vil makke ret.
Den indeholder en række tider 10:00, 11:00, 12:00 osv. og ned af indeholder den en liste med forskellige baner.
Man skal kunne bruge det til at booke en sports bane. Eks. Bane 1 klokken 12:00.
De tider der er booket bliver gemt i databasen. Det virker også fint nok. Men de tider som allerede er booket vil jeg ha fjernet fra JTablen så man ikke kan booke den samme tid på samme bane igen.

Jeg får alle mine booked tider op i et Array. Jeg skal så på en eller anden måde sortere det array så jeg først får alle Bane 1's tider derefter Bane 2's tider. OSV. Man kunne evt. smide det i en Matrix men jeg kan simpelthen ikke gennemskue hvordan jeg får lavet en løkke eller lign. til at sortere det ordenligt.

Håber I kan sætte jer ind i problemet ellers spørg så uddyber jeg gerne. :)
Avatar billede arne_v Ekspert
11. juni 2010 - 17:21 #1
Jeg har lidt svaert ved at se den store sammenhaeng mellem sortering og JTable.

Men hvis problemet er at sortere et array af en bean type, saa kan du bruge Arrays.sort enten med en custom Comparator eller ved at have bean klassen implementere Comparable.
Avatar billede ChinaPete Nybegynder
11. juni 2010 - 23:21 #2
Jeg bruger et Array med tiderne til at fylde mit JTable.

Når jeg så får mine booked tider fra databasen, ligger de i et Array<objekt> med hvilken Bane og hvilken tid de er optaget på.
Jeg skal derfor så sortere det sidst nævnte array til at fjerne de tider der er optaget på hver sin bane.
eks:
Bane: 1    12:00    13:00    14:00
Bane: 2    12:00    13:00    14:00

Hvis man så booker Bane 2 klokken 13 skal den fjernes næste gang man viser tabellen.

håber det hjalp lidt med at se problemet :)
Avatar billede arne_v Ekspert
14. juni 2010 - 04:18 #3
Slet ikke.

Jeg har ingen anelse om hvad du har brug for.

Noget tilfældigt kode med noget sortering og noget fjernelse:

package june;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Bane implements Comparable<Bane>{
    private int bane;
    private int time;
    public Bane(int bane, int time) {
        this.bane = bane;
        this.time = time;
    }
    public int getBane() {
        return bane;
    }
    public int getTime() {
        return time;
    }
    public int compareTo(Bane o) {
        if(bane != o.bane) {
            return bane - o.bane;
        } else {
            return time - o.time;
        }
    }
    @Override
    public String toString() {
        return "[" + bane + "," + time + "]";
    }
    @Override
    public boolean equals(Object o) {
        return (o instanceof Bane) &&
              (bane == ((Bane)o).bane) &&
              (time == ((Bane)o).time);
    }
    @Override
    public int hashCode() {
        return (new Integer(bane + time)).hashCode();
    }
    public static void main(String[] args) {
        List<Bane> lst = new ArrayList<Bane>();
        lst.add(new Bane(2, 13));
        lst.add(new Bane(1, 12));
        lst.add(new Bane(2, 14));
        lst.add(new Bane(1, 14));
        lst.add(new Bane(1, 13));
        lst.add(new Bane(2, 12));
        System.out.println("Start:");
        for(Bane b : lst) {
            System.out.println(b);
        }
        Collections.sort(lst);
        System.out.println("Efter sortering:");
        for(Bane b : lst) {
            System.out.println(b);
        }
        lst.remove(new Bane(1, 14));
        lst.remove(new Bane(2, 13));
        System.out.println("Efter fjernelse af 2:");
        for(Bane b : lst) {
            System.out.println(b);
        }
    }
}
Avatar billede gedfrik Nybegynder
16. juni 2010 - 15:17 #4
Måske kan du bruge JTable.setAutoCreateRowSorter(true) ?

Den gør det muligt at sortere kolonnerne. Hvis du indsætter dine tider som et objekt java forstår, så burde din JTable automatisk kunne finde ud af at sortere dem rigtigt.

Kig her
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting
Avatar billede ChinaPete Nybegynder
16. juni 2010 - 20:47 #5
Jeg fandt selv ud af det, men giver dig points for dit eksempel. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester