JTable aus ArrayList füllen

Status
Nicht offen für weitere Antworten.

sCHween

Mitglied
Hei ho

ich schlage mich seit einigen Tagen mit ner Aufgabe rum und denke dass ich langsam verstehe wie das mit den Models funzt.
Allerdings happerts noch mit basics Sachen in Bezug auf Java, daher stell ich hier die Frage einfach mal...

Folgenden Code habe ich:
test.java
Code:
package gui;

import java.util.ArrayList;

import infrastructure.interfaces.Record;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;

public class test{
	ArrayList<Record> results;
	public test() {
		// // // // // // // // // // // // // // // // // // // // // //
		// TEMPORARY RESULTS IMPLEMENTATION //
		// // // // // // // // // // // // // // // // // // // // // //
		ArrayList<Record> results = new ArrayList<Record>();
		results.add(new TempResult("One", "U2", "2007-04-01 08:15:02", "3:42"));
		results.add(new TempResult("Two had found three fours of five",
				"The Black Eyed Peas", "2007-04-01 08:19:31", "4:07"));
		results.add(new TempResult("Number three", "Jonny Cash",
				"2007-04-01 08:25:10", "2:58"));
		
		// Das JTable initialisieren
		final TableModel rtm = new ReporterTableModel();
		final JTable table = new JTable(rtm);

		final JFrame frame = new JFrame("Reporter ");
		frame.getContentPane().add(new JScrollPane(table));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new test();
	}
   

   // // // // // // // // // // // // // // // // // // // // // //
   // TEMPORARY CLASS IMPLEMENTATIONS							  //
   // // // // // // // // // // // // // // // // // // // // // //
    
   /**
    * Temporary class that implements Record.
    * For testing only.
    * 
    * @author brudt1
    */
   class TempResult implements Record
   {
       private String artist;
       private String duration;
       private String start;
       private String title;
       
       public TempResult(String t, String a, String s, String d)
       {
           artist = a;
           title = t;
           start = s;
           duration = d;
       }

       public String getArtist()
       {
           return artist;
       }

       public String getEffDuration()
       {
           return duration;
       }

       public String getStartTime()
       {
           return start;
       }

       public String getTitle()
       {
           return title;
       }
       
   }
}

Mein ReporterTabelModel.java sieht so aus:
Code:
package gui;

import javax.swing.table.AbstractTableModel;
import infrastructure.interfaces.Record;

public class ReporterTableModel extends AbstractTableModel{


	public int getColumnCount() {
	        return 4;
	}

	public int getRowCount() {
		return 0;
	}

	[COLOR="Red"]public Object getValueAt(int rowIndex, int columnIndex) {
		Record result = results.get( rowIndex );
		return null;
	}[/COLOR]

	@Override
	public String getColumnName(int column) {
		switch( column ){
        case 0: return "Artist";
        case 1: return "Title";
        case 2: return "Starttime";
        case 3: return "Duration";
        default: return null;
     } 
	}

}

Mein Problem liegt bei der Methode getValueAt.
Da muss ich ja jetzt auf meine ArrayList zugreifen und anhand der des columnIndex den entsprechenden Wert auslesen.
Allerdings schaff ichs nicht auf mein results aus test.java zuzugreiffen.

Vielen Dank für eure Hilfe - blicke echt nicht durch...:)
 
S

SlaterB

Gast
Objekte kann man per Parameter übergeben,
so stehts in jedem Buch am Anfang beschrieben,

wenn du hochkomplexe Dinge wie TableModel ohne Grundlagen angehst, kann das ja nur schiefgehen..
 

sCHween

Mitglied
Hi SlaterB

Danke für Deine Antwort. Ich weiss, die Frage ist für mein Niveau zu hoch, allerdings hab ich sie nicht gewählt ;)

Code:
public Object getValueAt(int rowIndex, int columnIndex) {

kann ich ja nicht einfach mit dem Parameter erweitern, da sonst getValueAt(int, int) wieder implementiert werden muss.

Ich wär Dir echt dankbar wenn du mir weiterhelfen könntest!
 

madboy

Top Contributor
Hi,

packe deine Daten ( ArrayList<Record> results ) ins Model und greife darauf über getValueAt() und getValueAt() zu. Sonst wirds recht schnell recht häßlich :wink:

Gruß,
madboy
 

sCHween

Mitglied
tasch auch ;)

ich hab hier mal eine Version die läuft!
Allerdings bewege ich mich hier auf ziemlich dünnen Eis!

Thanks für eure Unterstützung...

test.java

Code:
package gui;

import java.util.ArrayList;

import infrastructure.interfaces.Record;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;

public class test{
	
	public test() {
		// // // // // // // // // // // // // // // // // // // // // //
		// TEMPORARY RESULTS IMPLEMENTATION            //
		// // // // // // // // // // // // // // // // // // // // // //
		ArrayList<Record> results = new ArrayList<Record>();
		results.add(new TempResult("One", "U2", "2007-04-01 08:15:02", "3:42"));
		results.add(new TempResult("Two had found three fours of five",
				"The Black Eyed Peas", "2007-04-01 08:19:31", "4:07"));
		results.add(new TempResult("Number three", "Jonny Cash",
				"2007-04-01 08:25:10", "2:58"));
		
		// INIT JTABLE
		final TableModel rtm = new ReporterTableModel(results);
		final JTable table = new JTable(rtm);

		final JFrame frame = new JFrame("Reporter ");
		frame.getContentPane().add(new JScrollPane(table));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new test();
	}

   // // // // // // // // // // // // // // // // // // // // // //
   // TEMPORARY CLASS IMPLEMENTATIONS		  //
   // // // // // // // // // // // // // // // // // // // // // //
    
   /**
    * Temporary class that implements Record.
    * For testing only.
    * 
    * @author brudt1
    */
   class TempResult implements Record
   {
       private String artist;
       private String duration;
       private String start;
       private String title;
       
       public TempResult(String t, String a, String s, String d)
       {
           artist = a;
           title = t;
           start = s;
           duration = d;
       }

       public String getArtist()
       {
           return artist;
       }

       public String getEffDuration()
       {
           return duration;
       }

       public String getStartTime()
       {
           return start;
       }

       public String getTitle()
       {
           return title;
       }
       
   }
}


ReporterTableModel.java

Code:
package gui;

import infrastructure.interfaces.Record;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class ReporterTableModel extends AbstractTableModel{
   
	private ArrayList<Record> data;
    
    public ReporterTableModel(ArrayList<Record> data) {
        this.data = data;
    }
    
	public int getColumnCount() {
		return 4;
	}

	public int getRowCount() {
		return data.size();
	}

	public Object getValueAt(int rowIndex, int columnIndex) {
		Record result = data.get(rowIndex);
		switch (columnIndex) {
		case 0:
			return result.getArtist();
		case 1:
			return result.getTitle();
		case 2:
			return result.getStartTime();
		case 3:
			return result.getEffDuration();
		default:
			return null;
		}
	}

	@Override
	public String getColumnName(int column) {
		switch (column) {
		case 0:
			return "Artist";
		case 1:
			return "Title";
		case 2:
			return "Starttime";
		case 3:
			return "Duration";
		default:
			return null;
		}
	}
}
 
G

Guest

Gast
Code:
abstract class AbstractListTableModel<TRowType> extends AbstractTableModel
{
   private List<TRowType> data = new ArrayList<TRowType>();
   private String columnNames[];

   public AbstractListTableModel(String columnNames[])
   {
      this.columnNames = columnNames;
      if(columnNames == null)
      {
         throw new IllegalArgumentException("columnNames must not be null");
      }
   }

   public final void setData(List<TRowType> data)
   {
      this.data.clear();
      if(data != null)
      {
         this.data.addAll(data);
      }
      fireTableDataChanged();
   }

   public final List<TRowType> getData()
   {
      List<TRowType> result = new ArrayList<TRowType>(data.size());
      result.addAll(data);
      return result;
   }

   protected abstract Object getValueAt(TRowType src, int column);

   public final Object getValueAt(int row, int column)
   {
      return getValueAt(data.get(row), column);
   }

   protected void setValueAt(TRowType dst, int column, Object value)
   {
   }

   public final void setValueAt(Object value, int row, int column)
   {
      setValueAt(data.get(row), column, value);
      fireTableRowsUpdated(row, row);
   }

   public final int getRowCount()
   {
      return data.size();
   }

   public int getColumnCount()
   {
      return columnNames.length;
   }

   public String getColumnName(int column)
   {
      return columnNames[column];
   }

}
Verwendung
Code:
AbstractListTableModel<Record> model = new AbstractListTableModel<Record>(
         new String[] { "Artist", "Title", "Starttime", "Duration" } ) {
   protected Object getValueAt(Record src, int column)
   {
      switch (column)
      {
      case 0: return src.getArtist();
      case 1: return src.getTitle();
      case 2: return src.getStartTime();
      case 3: return src.getEffDuration();
      default: throw new IllegalArgumentException(String.format("Column {0} does not exist", column));
      }
   }
};

model.setData(results);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
thobren jtable arraylist Java Basics - Anfänger-Themen 12
J ArrayList wird in JTable falsch angezeigt Java Basics - Anfänger-Themen 0
X ArrayList to String[][] für JTable Java Basics - Anfänger-Themen 9
E GUI JTable und ArrayList Java Basics - Anfänger-Themen 3
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren JTable Icon Java Basics - Anfänger-Themen 1
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
B Kniffel JTable Java Basics - Anfänger-Themen 5
N JTable flackert Java Basics - Anfänger-Themen 8
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
LexeB4F DEL --> JTable Zelleninhalt Java Basics - Anfänger-Themen 3
R JTable Auslesen Java Basics - Anfänger-Themen 1
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S JTable clonen Java Basics - Anfänger-Themen 5
H Best Practice PDF JTable Java Basics - Anfänger-Themen 4
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
F Zeile bei JTable hinzufügen Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
B JTable - Highlighter ??? Java Basics - Anfänger-Themen 3
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
L JTable Row selected -> fireTableDataChange do nothing. Java Basics - Anfänger-Themen 3
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
F JTable adding Row Java Basics - Anfänger-Themen 5
P jTable getColumnClass, mit unterschiedlichen Klassen in einer Column? Java Basics - Anfänger-Themen 5
M Eingabe in JTable bei Eingabe korrigieren Java Basics - Anfänger-Themen 2
Z jtable problem (das tausendste??) Java Basics - Anfänger-Themen 12
J JTable Java Basics - Anfänger-Themen 7
T JTable Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
C jtextfield und jtable Java Basics - Anfänger-Themen 34
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G JTable: SelectionListener Problem Java Basics - Anfänger-Themen 2
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
S Icons in JTable per ResultSet Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
W Problem JTable Java Basics - Anfänger-Themen 5
M JTable wird nicht aktualisiert Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben