Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Von ArrayList lesen und in eine JTable schreiben

  1. #1
    bozkurt
    Gast

    Von ArrayList lesen und in eine JTable schreiben

    Hallo,

    ich habe eine Problem und ich hoffe dass ihr mir da weiterhelfen könnt...

    ich habe eine ArrayList Person und ich habe eine Tabelle und ich will von der

    ArrayList Person die Daten in JTable rein tun...

    wie kann ich das machen...

    vielen dank im voraus...

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Du brauchst erstmal ein Datenmodel, das von AbstractTableModel abgeleitet ist. Dazu erzeugst Du dir noch einen Listener, der dir sagt wenn die Tabelle geändert wurde und erzeugst dann eine JTable mit diesem Datenmodel.

    Beim Datenmodel musst Du dann Methoden wie z.B. getValueAt() so überschreiben, dass der entsprechende Wert aus dem Array zurückgegeben wird.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    bozkurt
    Gast
    Hallo,

    danke für deine schnelle Antwort...

    ich bin neu bei programmieren und kannst du bitte einbissle detalliert erklären

    mit dem Datenmodell...mit einem kleinen Beispiel vielliecht...

    vielen dank

  4. #4
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Ok, ich hab hier mal einen Teil aus einem Programm, das ich mal geschrieben habe:
    Code:
        dataModel = new AbstractTableModel()  // anonyme Klasse
        {               // dataModel ist von der Klasse AbstractTableModel
          public int getColumnCount()
          {
            if(AdressenListe.isEmpty() == true) // AdressenListe ist ein 2D-Vector
              return 0;
            else
            {
              Vector tmp = (Vector)AdressenListe.firstElement();
              return tmp.size();
            }
          }
          public int getRowCount()
          {
            if(AdressenListe.isEmpty() == true)
              return 0;
            else
              return AdressenListe.size();
          }
          public String getColumnName(int column)
          {
            if(AdressenListe.isEmpty() == true)
              return null;
            else
              switch (column)
              {
                case 0 : return "ID";
                case 1 : return "Name";
                case 2 : return "Beruf";
                default: return ""+column;
              }
          }
          public Object getValueAt(int row, int column)
          {
            if (AdressenListe.isEmpty() == true)
              return null;
    
            Vector tmp = (Vector)AdressenListe.elementAt(row);
            return tmp.elementAt(column);
          }
          public void setValueAt(Object aValue, int row, int column)
          {
            Vector tmp = new Vector();          //leerer Vector
            tmp.add(getRowCount()+1+"");
            tmp.add("");
            tmp.add("");
    
            if (column == -1)                   // Zeile löschen
            {
              AdressenListe.remove(row);
    
              while(++row <= getRowCount())
              {
                tmp = (Vector)AdressenListe.elementAt(row-1);
                tmp.setElementAt(row+"",0);
              }
            }
            else if (row > getRowCount())       // Zeile anhängen
            {
              AdressenListe.addElement(tmp);
            }
            else if (row < getRowCount() && row != -1)
            {
              if (column != 0)                // Zeile ändern
              {
                tmp.clear();
                tmp = (Vector)AdressenListe.elementAt(row);
                tmp.setElementAt(aValue,column);
              }
              else                            // Zeile hinzufügen
              {
                tmp.setElementAt(row+1+"",0);
                AdressenListe.add(row,tmp);
    
                while(++row < getRowCount())
                {
                  tmp = (Vector)AdressenListe.elementAt(row);
                  tmp.setElementAt(row+1+"",0);
                }
              }
            }
          }
          public boolean isCellEditable(int row,int column)
          {
            return column != 0;
          }
        };
    
        dataModel.addTableModelListener(new TableModelListener()
            {
          public void tableChanged(TableModelEvent e)
          {
            speichern.setEnabled(true);
          }
            });
    
        txtTable = new JTable(dataModel);  // Datenmodel in Tabelle einfuegen
        pane = new JScrollPane(txtTable);  // Tabelle in JPanel einfuegen
    Es werden hier drei Spalten beschrieben, wobei die 2. und 3. editierbar sind. Über ein Menü (nicht beschrieben) können Zeilen hinzugefügt bzw. entfernt werden.
    Um Änderungen zu aktualisieren muss in einem ActionListener noch folgende Zeile stehen:
    Code:
          dataModel.fireTableDataChanged();
    Das sollte Dir ein Stück weiter helfen.
    Ansonsten habe ich noch zwei sehr nützliche Links:
    http://www.galileocomputing.de/openbook/javainsel5/
    http://www.javabuch.de/
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  5. #5
    bozkurt
    Gast
    vielen dank ...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •