Ergebnisse dynamisch in Tabelle schreiben

Nula

Mitglied
Hi,

hab mal wieder ein Problem:
Ich öffne verschiedene Threads, die ein Programm abarbeiten. Das Ergebnis gebe ich zur Zeit in der Konsole auf und das funzt.
Jetzt möchte ich das Ergebnis aber in eine Zeile einer Tabelle schreiben. Das geht aber nicht so, wie ich mir das denke. Entweder kommt jedes Mal eine ganz neue Tabelle oder gar nichts.
Habe mir dann gedacht, ich erstelle die Tabelle in der main und füge in den einzelnen Threads nur Zeilen hinzu. Hier die Klasse für die Tabelle
Java:
import java.awt.*;
import javax.swing.*;

public class ModelJTable extends JFrame {
  private DefaultTableModel model;

  private JTable table;

  public ModelJTable(){
    super();
    model = new DefaultTableModel();
    model.addColumn("Spalte 1");
    model.addColumn("Spalte 2");
    model.addColumn("Spalte 3");
    
      table = new JTable(model);

      Container container = getContentPane();
    container.add(new JScrollPane(table), BorderLayout.CENTER);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(400, 300);
    setVisible(true);
  } 
 }

Aufruf in der main mit
Java:
new ModelJTable();

Wie füge ich jetzt den Zeileninhalt, der in einer anderen Klasse in einer Methode erzeugt wird, in die Tabelle ein? Ich weiß schon, dass ich da iwi addRow nehmen muss, aber eben nicht wie genau. Eine feste Zeilenanzahl kann nicht angegeben werden.
 

Volvagia

Top Contributor
Warum nimmst du keine Collection für die Daten? z. B. LinkedList und schreibst dort die Ergebnisse rein. Bei der JTable überschreibst du das DefaultModel und gibst in getValue den Wert zurück, in getRowCount die size der Collection, in getColumnCount die Anzahl der Spalten (1 nehme ich mal an) und isCellEditable bzw. setValueAt überschreibst du ja Bedarf. Danach musst du die Daten nur noch in der Collection ändern (synchronisieren nicht vergessen!) und revalidate der Tabelle aufrufen.
Ist besonders nützlich wenn die Daten nicht nur in der Tabelle sein sollen.

Ich kenne mich mit dem DefaultModel nicht so aus, aber ich denke addRow(Vector) war das, was du wolltest.
 

Volvagia

Top Contributor
Java:
package javaforum.nula;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TableModelOverwrite {
	private boolean threadsRunning;
	private List<Log> logs;
	private JTable table;
	
	public TableModelOverwrite() {
		logs = new LinkedList<TableModelOverwrite.Log>();
		
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		table = new JTable(new DefaultTableModel() {
			private final String[] COLUMN_NAMES = {
					"Text", "Date", "Thread"
			};
			
			public Object getValueAt(int row, int column) {
				Log log = logs.get(row);
				return(column == 0 ? log.getText() :
					column == 1 ? log.getDateString() :
						log.getThreadName());
			}
			public int getRowCount() {
				return(logs.size());
			}
			public int getColumnCount() {
				return(COLUMN_NAMES.length);
			}
			public String getColumnName(int column) {
				return(COLUMN_NAMES[column]);
			}
			public boolean isCellEditable(int row, int column) {
				return(false);
			}
			public void setValueAt(Object aValue, int row, int column) {
				Log log = logs.get(row);
				if(column == 0) {
					log.setText(aValue.toString());
				} else if(column == 1) {
					log.setDateString(aValue.toString());
				} else if(column == 2) {
					log.setThreadName(aValue.toString());
				}
			}
		});
		frame.add(new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED),
				BorderLayout.CENTER);
		
		frame.add(new JButton(new AbstractAction("Start") {
			public void actionPerformed(ActionEvent e) {
				startTask();
			}
		}), BorderLayout.SOUTH);
		
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	private void startTask() {
		new Thread("TaskHandler") {
			public void run() {
				threadsRunning = true;
				
				for(int i = 0; i < 5; i++) {
					startSubThread();	
				}
				
				try {
					TimeUnit.SECONDS.sleep(5L);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				
				threadsRunning = false;
			}
		}.start();
	}
	private void startSubThread() {
		new Thread() {
			private final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss, dd.MM.yyy");
			
			public void run() {
				do {
					Log log = new Log("Thread doing a loop", sdf.format(new Date()), getName());
					synchronized(logs) {
						logs.add(log);
					}
					table.revalidate();
					
					try {
						TimeUnit.MILLISECONDS.sleep(100L);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				} while(threadsRunning);
			}
		}.start();
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				new TableModelOverwrite();
			}
		});
	}
	
	public class Log {
		private String text;
		private String dateString;
		private String threadName;
		
		public Log(String text, String dateString, String threadName) {
			this.text = text;
			this.dateString = dateString;
			this.threadName = threadName;
		}
		public String getText() {
			return (text);
		}
		public String getDateString() {
			return (dateString);
		}
		public String getThreadName() {
			return (threadName);
		}
		public void setText(String text) {
			this.text = text;
		}
		public void setDateString(String dateString) {
			this.dateString = dateString;
		}
		public void setThreadName(String threadName) {
			this.threadName = threadName;
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
D Ergebnisse in Arrays ausgeben? Java Basics - Anfänger-Themen 11
S Ergebnisse zwischenspeichern (Analog zu ans-Taste bei Taschenrechnern) Java Basics - Anfänger-Themen 3
A SelectionSort bringt keine konstanten Ergebnisse Java Basics - Anfänger-Themen 4
R StringBounds falsche Ergebnisse Java Basics - Anfänger-Themen 5
V Ergebnisse in 2 Zeilen Java Basics - Anfänger-Themen 4
H String einlesen, in .txt durchsuchen und Ergebnisse ausgeben Java Basics - Anfänger-Themen 22
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
G unerwartete Ergebnisse beim URL auslesen Java Basics - Anfänger-Themen 2
Strahlungsleck [Erledigt]Ergebnisse des Ausgelesenen Verzweichnis verwerten/benutzen Java Basics - Anfänger-Themen 9
K Ergebnisse auf einem Label anzeigen lassen ? Java Basics - Anfänger-Themen 20
K Verschiebeoperatoren - manchmal falsche Ergebnisse Java Basics - Anfänger-Themen 7
S Ergebnisse einer while Schleife zusammenfassen Java Basics - Anfänger-Themen 4
C Ergebnisse auf 2 Kommastellen runden Java Basics - Anfänger-Themen 3
S integer ergebnisse Java Basics - Anfänger-Themen 6
S Ergebnisse aus statischen Methoden weiterverwenden Java Basics - Anfänger-Themen 5
A Wochentag über SimpleDateFormat bringt wirre Ergebnisse Java Basics - Anfänger-Themen 4
D Ergebnisse als .txt Speichern.wichtig. Java Basics - Anfänger-Themen 47
V Ergebnisse in einer Struktur speichern Java Basics - Anfänger-Themen 4
G Mehrere Ergebnisse ausgeben Java Basics - Anfänger-Themen 3
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
J Verundung dynamisch gestalten Java Basics - Anfänger-Themen 21
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
B Klassen Klasse dynamisch laden. Java Basics - Anfänger-Themen 8
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
D Koordinatensystem dynamisch anpassen Java Basics - Anfänger-Themen 17
J Tableview, ObservableList ein bisschen dynamisch Java Basics - Anfänger-Themen 6
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
G Array dynamisch ausgeben Java Basics - Anfänger-Themen 3
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
F Erste Schritte If Bedingung in Schleife dynamisch erweitern Java Basics - Anfänger-Themen 4
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
N Dynamisch JTree erstellen Java Basics - Anfänger-Themen 3
R Objekte dynamisch erstellen? Java Basics - Anfänger-Themen 14
C Variablen Array dynamisch halten und ausrechnen Java Basics - Anfänger-Themen 14
G JObjekte dynamisch vom Server erzeugen lassen Java Basics - Anfänger-Themen 4
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
H Objekte dynamisch erzeugen? Java Basics - Anfänger-Themen 6
M Variablen dynamisch variableninhalt von Object auslesen Java Basics - Anfänger-Themen 4
S if-Block dynamisch aufbauen Java Basics - Anfänger-Themen 5
M Static Variable "dynamisch" aufrufen? Java Basics - Anfänger-Themen 8
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
P Scrollpane mit dynamisch erzeugten Komponenten Java Basics - Anfänger-Themen 3
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
A Dynamisch die Anzahl der Threads in der Cyclic Barrier ändern Java Basics - Anfänger-Themen 2
K Datentypen Full qualified Name dynamisch gestalten Java Basics - Anfänger-Themen 7
M For-Schleifen dynamisch generieren? Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2
D JPanel dynamisch anpassen Java Basics - Anfänger-Themen 5
S Dialog dynamisch vergrößern Java Basics - Anfänger-Themen 2
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
M JTextPane dynamisch erzeugen Java Basics - Anfänger-Themen 2
J Aufgaben Dynamisch auf Pool von Threads verteilen. Java Basics - Anfänger-Themen 3
D ArrayList dynamisch befüllen Java Basics - Anfänger-Themen 14
G Objekteigenschaften dynamisch erzeugen Java Basics - Anfänger-Themen 7
jnoob Checkbox in Dialog Dynamisch erstellen Java Basics - Anfänger-Themen 2
K suche nicht dynamisch Datenstruktur Java Basics - Anfänger-Themen 6
J ListModel dynamisch und schnell aber sicher ändern Java Basics - Anfänger-Themen 7
M Dynamisch Instanzen erstellen. Java Basics - Anfänger-Themen 4
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
B arrays dynamisch vergrößern Java Basics - Anfänger-Themen 5
V Kundenklasse dynamisch erzeugen und id hochzählen? Java Basics - Anfänger-Themen 4
C Dynamisch durch alle Objektvariablen eines Objektes iteriere Java Basics - Anfänger-Themen 15
P JPanel dynamisch mit ActionListener verwalten Java Basics - Anfänger-Themen 3
R Arraygroesse dynamisch anpassen Java Basics - Anfänger-Themen 8
X this dynamisch, super statisch? Java Basics - Anfänger-Themen 3
G Namen von ArrayListen dynamisch erzeugen Java Basics - Anfänger-Themen 4
H variable dynamisch ändern Java Basics - Anfänger-Themen 2
G Klasse dynamisch ohne Datei compilieren: Fehler Java Basics - Anfänger-Themen 4
G Klasse dynamisch nachladen: Fehler Java Basics - Anfänger-Themen 9
T Array Dynamisch Erweiterm Java Basics - Anfänger-Themen 15
H dynamisch Klassen laden und ausführen Java Basics - Anfänger-Themen 3
M Gleichungen dynamisch erstellen und ausrechnen? Java Basics - Anfänger-Themen 8
G Pfad dynamisch gestalten. Java Basics - Anfänger-Themen 3
B Matrix Dynamisch erzeugen Java Basics - Anfänger-Themen 3
G JTable dynamisch erzeugen. Java Basics - Anfänger-Themen 2
D Labels Dynamisch ? Java Basics - Anfänger-Themen 5
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
G Variablenname dynamisch vergeben Java Basics - Anfänger-Themen 10
H 2DArray manuell dynamisch erweitern Java Basics - Anfänger-Themen 7
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
M Dynamisch Klassen aufrufen Java Basics - Anfänger-Themen 4
H JLabel dynamisch anzeigen? Java Basics - Anfänger-Themen 10
T ActionListener zu Buttons dynamisch zuordnen Java Basics - Anfänger-Themen 10
G dynamisch Jtextfields erzeugen Java Basics - Anfänger-Themen 3
M HTML Seite die Daten in JavaApplet dynamisch verarbeiten Java Basics - Anfänger-Themen 2
H Variablenname dynamisch festlegen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben