Avatar billede morphix Nybegynder
18. februar 2003 - 16:20 Der er 8 kommentarer

Outlook lignende grid søges (grouping and sorting in a grid)

Hej jeg er ved at udvikle en java applikation, og jeg mangler et grid lignende det man har i Outlook.
Jeg har set lidt på mulighederne for at extende JTable, men det virker lidt omfattende.

Så hvis nogen har kendskab til et sådan component gerne commercielt så sig endelig til!!!
Avatar billede magoo20000 Nybegynder
18. februar 2003 - 20:36 #1
Er ikke helt sikker på, hvad du mener med grid, men har du set på TabelModel i sdk'en?
Avatar billede viht Nybegynder
18. februar 2003 - 21:41 #2
Er det tabellen over mails du vil gengive i Java? Altså med kolonner til Fra, Emne, Modtaget osv?
Avatar billede morphix Nybegynder
19. februar 2003 - 10:02 #3
Et grid/ en tabel der kan grupperes på en kategori,for herakist fremstilling af dataene i tabellen. Lige som tabellerne i outlook/ikke outlook express.
Jeg har set på TableModellen i swing lib, men det er en temmelig omfattende opgave selv at lave sådan et grid...
men det bliver måske enden af det...
Avatar billede magoo20000 Nybegynder
19. februar 2003 - 11:43 #4
Jeg er ikke nogen haj til Jtable, men søg efter JTabel her på Eksperten - der er mange hits! Mener at have set et prørgsmål der lignede dit engang.
Avatar billede viht Nybegynder
19. februar 2003 - 13:10 #5
Well, du kan godt sortere kolonner rimelig simpelt. Du tilføjer blot en mouseListener på tableheaderen.

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class TableSort extends JFrame {
    private JTable table;
    private MyTableModel model;

    public static void main(String args[]) {
        new TableSort();
    }
    public TableSort() {
        model = new MyTableModel();
        model.addColumn("Letters",new Object[] {"B","A","C"});
        model.addColumn("Double Letters",new Object[] {"AA","BB","DD"});
        model.addColumn("Numbers",new Object[] {"2","1","3"});
        table = new JTable(model);
        table.getTableHeader().addMouseListener(new HeaderSortListener());
       
        setContentPane(new JScrollPane(table));
        setSize(300,200);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    class HeaderSortListener extends MouseAdapter  {
        public void mouseClicked(MouseEvent e) {
              TableColumnModel columnModel = table.getColumnModel();
              int column = columnModel.getColumnIndexAtX(e.getX());
              if (e.getClickCount() == 1 && column != -1) {
                  model.sortColumn(column);
              }
        }
    }

    class MyTableModel extends DefaultTableModel implements Comparator {
       
        int sortColumn;
       
        public void sortColumn(int sortColumn) {
              this.sortColumn = sortColumn;
              Collections.sort(dataVector,this);
        }
       
        public int compare(Object o1, Object o2)  {
              if (o1 == null) return -1;
              if (o2 == null) return 1;

              Vector vect1 = (Vector) o1;
              Vector vect2 = (Vector) o2;
              Comparable col1 = (Comparable) vect1.get(sortColumn);
              Comparable col2 = (Comparable) vect2.get(sortColumn);
              return col1.compareTo(col2);
        }
    } 
}
Avatar billede morphix Nybegynder
19. februar 2003 - 13:33 #6
Tak for svaret, men jeg ved godt hvordan man customicerer JTable, egentlig ved jeg også hvordan man skal implemeterer en group by column funktionalitet... men jeg vil estimerer at det vil tage omkring 20 timer + test,
så jeg leder efter et allerede eksisterende component
Avatar billede viht Nybegynder
19. februar 2003 - 13:52 #7
Jeg forstår ikke hvad du mener, vil du ikke lave det selv da? En Outlook funktionalitet kan med ovenstående kode laves på en time.
Avatar billede morphix Nybegynder
19. februar 2003 - 14:31 #8
viht->
ok hvis du kan kode det på en time, eller i det heletaget hvis du gider kode det, kan du da tjæne penge på det, men jeg tror ikke du har fået rigtig fat i hvad for en funktionalitet jeg skal bruge, jeg prøver lige igen.
I outlook kan man ud over at sorterer kolonnerne, også grupperer på en kolonne.
dette foregår ved at man(i outlook b.la. i indboxen, og det er denne funktionallitet jeg skal bruge) kan vælge 'group by', og trække kolonne headerne op i 'group by boxen', herefter vil visningen i grid'et/tabellen opdele tabellen i en hirakisk struktur man kunne fristes til at kalde det for en treetable, man kan på denne måde trælle alle de ønskede kolonner op og gruppere efter behov.
I en indbox kunne det feks være relavant at grupperer på From kolonnen(ascending sort) og sorterer på Received kolonnen
Det vil resulterer i at man får en visning med alle dem der har mailet til en listet i alfabetisk rækkefølge, trykker man på et af navnene får man så alle mails den pågældene person har sendt sorteret efter dato...
Jeg ved ikke hvordan jeg skal precicerer det yderligere...

på forhånd tak
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