Fehler beim Übergeben von Daten an JTable

MichaFL123

Mitglied
Hallo liebe Java-Freunde,

ich habe die Aufgabe ein Programm zu schreiben, welches .txt Dateien einließt und verarbeitet.

Dafür habe ich eine Klasse geschrieben die die Grunddaten beschreibt:
Java:
package testing2;

public class Zaehlpunkt {
	//Hilfs/Kontrollvariablen
	private int id; 				//Zählervariable
	private boolean gueltig; 		//Prüfvariable
	private String ref;				//Referenz
	
	//Datendeklarierung 
	private String msg_sender; 		//Nachrichtensender
	private String msg_receiver; 	//Nachrichtenempfänger
	private String zp_bez; 			//Zählpunkt-Bezeichnung
	private String zp_dat; 			//Zählpunkt-Datum
	private String zp_zlger;		//Zählpunkt-Zählgerät
	private String zp_obis; 		//Zählpunkt-Geräte/OBIS-Kenennung
	private String zp_qual;			//Zählpunkt-Qualifyer
	private String zp_zlstand;  	//Zählpunkt-Zählerstand
	private String zp_zldatum;  	//Zählpunkt-Zählerdatum
	private String zp_zlgr;			//Zählpunkt-Grund
	private String zp_status;		//Zählpunkt-Status
	private String zp_wandfak;   	//Zählpunkt-Wandlerfaktor
		
	//Konstruktor
	   public Zaehlpunkt(int id, String ref, String msg_sender, String msg_receiver,
		    String zp_bez, String zp_dat, String zp_zlger, String zp_obis,
			String zp_qual, String zp_zlstand, String zp_zldatum,
			String zp_zlgr, String zp_status, String zp_wandfak) {
		super();
		this.id = id;
		this.ref = ref;
		this.msg_sender = msg_sender;
		this.msg_receiver = msg_receiver;
		this.zp_bez = zp_bez;
    	this.zp_dat = zp_dat;
		this.zp_zlger = zp_zlger;
 		this.zp_obis = zp_obis;
		this.zp_qual = zp_qual;
		this.zp_zlstand = zp_zlstand;
		this.zp_zldatum = zp_zldatum;
		this.zp_zlgr = zp_zlgr;
		this.zp_status = zp_status;
		this.zp_wandfak = zp_wandfak;
	}
	
	// Getter & Setter
	public String getMsg_sender() {
		return msg_sender;
}
	public void setMsg_sender(String msg_sender) {
		this.msg_sender = msg_sender;
	}
	public String getMsg_receiver() {
		return msg_receiver;
	}
	public void setMsg_receiver(String msg_receiver) {
		this.msg_receiver = msg_receiver;
	}
	public String getZp_bez() {
		return zp_bez;
	}
	public void setZp_bez(String zp_bez) {
		this.zp_bez = zp_bez;
	}
	public String getZp_dat() {
		return zp_dat;
	}
	public void setZp_dat(String zp_dat) {
		this.zp_dat = zp_dat;
	}
	public String getZp_obis() {
		return zp_obis;
	}
	public void setZp_obis(String zp_obis) {
		this.zp_obis = zp_obis;
	}
	public String getZp_qual() {
		return zp_qual;
	}
	public void setZp_qual(String zp_qual) {
		this.zp_qual = zp_qual;
	}
	public String getZp_zlstand() {
		return zp_zlstand;
	}
	public void setZp_zlstand(String zp_zlstand) {
		this.zp_zlstand = zp_zlstand;
	}
	public String getZp_zldatum() {
		return zp_zldatum;
	}
	public void setZp_zldatum(String zp_zldatum) {
		this.zp_zldatum = zp_zldatum;
	}
	public String getZp_wandfak() {
		return zp_wandfak;
	}
	public void setZp_wandfak(String zp_wanfak) {
		this.zp_wandfak = zp_wanfak;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public boolean isGueltig() {
		return gueltig;
	}
	public void setGueltig(boolean gueltig) {
		this.gueltig = gueltig;
	}
	public void setZp_status(String zp_status) {
		this.zp_status = zp_status;
	}
	public String getZp_status() {
		return zp_status;
	}
	public void setRef(String ref) {
		this.ref = ref;
	}
	public String getRef() {
		return ref;
	}
	public void setZp_zlger(String zp_zlger) {
		this.zp_zlger = zp_zlger;
	}
	public String getZp_zlger() {
		return zp_zlger;
	}
	public void setZp_zlgr(String zp_zlgr) {
		this.zp_zlgr = zp_zlgr;
	}
	public String getZp_zlgr() {
		return zp_zlgr;
	}
	
	
	
}

Die Parser-Klasse sieht folgendermaßen aus (die System.out-Anweisungen sind zur Kontrolle und werden später gelöscht)

Java:
package testing2;

import java.io.*;
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public abstract class FileParser {

	// Datendeklaration Speichervariablen
	private static int tmp_id; // Zählpunkt-ID
	private static String tmp_msg_sender; // Nachrichtensender
	private static String tmp_msg_receiver; // Nachrichtenempfänger
	private static String tmp_zp_bez; // Zählpunkt-Bezeichnung
	private static String tmp_zp_dat; // Zählpunkt-Datum
	private static String tmp_zp_zlger; // Zählpunkt-Zählgerät
	private static String tmp_zp_obis; // Zählpunkt-Geräte/OBIS-Kenennung
	private static String tmp_zp_qual; // Zählpunkt-Qualifyer
	private static String tmp_zp_zlstand; // Zählpunkt-Zählerstand
	private static String tmp_zp_zldatum; // Zählpunkt-Zählerdatum
	private static String tmp_zp_zlgr; // Zählpunkt-Ablesegrund
	private static String tmp_zp_status; // Zählpunkt-Status
	private static String tmp_zp_wandfak; // Zählpunkt-Wandlerfaktor
	private static ArrayList<Zaehlpunkt> tmp_zlpnkt = new ArrayList<Zaehlpunkt>();

	private static int hcounter; // Hilfsvariable fürs Zählen!
	// private static String file; //Pfad/Dateiname

	private Zaehlpunkt temp_zlpnkt;

	// Übergabe der Files
	public static void start(String file) throws IOException {
		// Setzen Zählervariable auf 0
		hcounter = 0;
		BufferedReader reader = new BufferedReader(new FileReader(file));

		String line;
		// Zeilenweises einlesen
		System.out.println("Neue MSCONS-Datei: " + file);
		System.out.println("-----------------------");
		while ((line = reader.readLine()) != null) {
			// Zerlegen in Segemente bei Trennzeichen "'".
			String[] result = line.split("'");
			// Durchlaufen der Segmente
			for (int x = 0; x < result.length; x++) {
				// System.out.print(x + " ");
				// System.out.println(result[x]);

				// Beginn Verarbeitung

				// Auslesen Sender
				if (result[x].startsWith("NAD+MS")) {
					Pattern patternMn = Pattern.compile("\\+(\\d+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Nachrichten-Sender");
						System.out.println(matcherMn.group(1));
						tmp_msg_sender = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Sender
				if (result[x].startsWith("NAD+MR")) {
					Pattern patternMn = Pattern.compile("\\+(\\d+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Nachrichten-Empfänger");
						System.out.println(matcherMn.group(1));
						tmp_msg_receiver = matcherMn.group(1);
						continue;
					}
				}
				// Beginn Mscons-Zählpunkte
				if (result[x].startsWith("NAD+DP")) {
					if (hcounter > 1) {
						// Übergabe der gesammelten Werte an temporäre ArrayList
						// tmp_zlpnkt
						tmp_id = hcounter++;
						tmp_zlpnkt.add(new Zaehlpunkt(tmp_id, file,
								tmp_msg_sender, tmp_msg_receiver, tmp_zp_bez,
								tmp_zp_dat, tmp_zp_zlger, tmp_zp_obis,
								tmp_zp_qual, tmp_zp_zlstand, tmp_zp_dat,
								tmp_zp_zlgr, tmp_zp_status, tmp_zp_wandfak));
						System.out.println(tmp_id + ". Zählpunkt");
						continue;
					}
					hcounter++;
					tmp_id = hcounter;
					System.out.println(tmp_id + ". Zählpunkt");
					continue;
				}

				// Auslesen Zählpunkt
				if (result[x].startsWith("LOC+172")) {
					Pattern patternMn = Pattern.compile("\\+(\\w+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählpunkt");
						System.out.println(matcherMn.group(1));
						tmp_zp_bez = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Zählgerät
				if (result[x].startsWith("RFF+MG")) {
					Pattern patternMn = Pattern.compile("\\:(\\w+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählgerät");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlger = matcherMn.group(1);
						continue;
					}
				}

				// Auslesen Datum
				if (result[x].startsWith("DTM+9")) {
					Pattern patternMn = Pattern.compile("\\:+(\\w+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zähler-Datum");
						System.out.println(matcherMn.group(1));
						tmp_zp_dat = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Gerätenummer/Obis
				if (result[x].startsWith("PIA+5")) {
					Pattern patternMn = Pattern.compile("\\:+(\\p{Graph}+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Geräte/Obis-Nummer");
						System.out.println(matcherMn.group(1));
						tmp_zp_obis = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Qualifyer-Nr
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\++(\\w+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Qualifyer-Nr");
						System.out.println(matcherMn.group(1));
						tmp_zp_qual = matcherMn.group(1);
						continue;

					}
				}
				// Auslesen Zählerstand mit :
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\:(\\p{Graph}+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstand");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlstand = matcherMn.group(1);
						// Wenn Zähler gefunden neue Prüfung überspringen
						continue;
					}
				}
				// Auslesen Zählerstand
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\:(\\d+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstand");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlstand = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Ablesgrund
				if (result[x].startsWith("CCI+ACH")) {
					Pattern patternMn = Pattern.compile("\\+\\W(\\w++)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Ablesegrund");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlgr = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Ablesestatus
				if (result[x].startsWith("CCI+16")) {
					Pattern patternMn = Pattern.compile("\\+\\D(\\w++)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstatus");
						System.out.println(matcherMn.group(1));
						tmp_zp_status = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Wandlerfaktor
				if (result[x].startsWith("MEA+SV+RY+A9")) {
					Pattern patternMn = Pattern.compile("\\:(\\p{Graph}+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Wandlerfaktor");
						System.out.println(matcherMn.group(1));
						tmp_zp_wandfak = matcherMn.group(1);
						continue;
					}
				}
			}
			// Übergabe der Werte an den tmporäre ArrayList tmp_zlpnkt
			if (hcounter == 1) {
				tmp_zlpnkt.add(new Zaehlpunkt(tmp_id, file, tmp_msg_sender,
						tmp_msg_receiver, tmp_zp_bez, tmp_zp_dat, tmp_zp_zlger,
						tmp_zp_obis, tmp_zp_qual, tmp_zp_zlstand, tmp_zp_dat,
						tmp_zp_zlgr, tmp_zp_status, tmp_zp_wandfak));
			}
		}
		// Erzeugen einer neuen Instanz MscFile pro File
		addZaehlpunkt(tmp_zlpnkt);
	}

	public static void addZaehlpunkt(ArrayList<Zaehlpunkt> tmp_zaehlpunkt) {

	}

}

Das TableModel habe ich wie folgt geschrieben:
Java:
package testing2;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class ZaehlpunktTableModel extends AbstractTableModel {

	public static final int SENDER_COLUMN 	= 0;
	public static final int RECEIVER_COLUMN = 1;
	public static final int BEZ_COLUMN 		= 2;
	public static final int DAT_COLUMN 		= 3;
	public static final int ZLGER_COLUMN 	= 4;
	public static final int OBIS_COLUMN 	= 5;
	public static final int QUAL_COLUMN     = 6;
	public static final int ZLSTAND_COLUMN  = 7;
	public static final int ZLGR_COLUMN		= 8;
	public static final int STATUS_COLUMN   = 9;
	public static final int WANDFAK_COLUMN  = 10;
	public static final int COLUMN_COUNT    = 11;
	
	private final ArrayList<Zaehlpunkt> zaehlpunkte = new ArrayList<Zaehlpunkt>();

	public void add(ArrayList<Zaehlpunkt> newZaehlpunkte) {
		int first = zaehlpunkte.size();
		int last = first + newZaehlpunkte.size() - 1;
		zaehlpunkte.addAll(newZaehlpunkte);
		fireTableRowsInserted(first, last);	
	}
	public void add(Zaehlpunkt zaehlpunkt) {
		int index = zaehlpunkte.size();
		zaehlpunkte.add(zaehlpunkt);
		fireTableRowsInserted(index, index);
	}
	
	public void remove(int index){
		zaehlpunkte.remove(index);
	} 
	
	public int getRowCount() {
		return zaehlpunkte.size();
	}
	
	public int getColumnCount() {
		return COLUMN_COUNT;
	}
	
	@Override
	public Class getColumnClass(int column) {
		return getValueAt(0, column).getClass();	
	}
	
	public Zaehlpunkt getZaehlpunkt(int row) {
		return zaehlpunkte.get(row);
	}
	
	public Object getValueAt(int row, int column) {
		Zaehlpunkt zaehlpunkte1 = zaehlpunkte.get(row);
		switch (column) {
		case SENDER_COLUMN:
			return zaehlpunkte1.getMsg_sender();
		case RECEIVER_COLUMN:
			return zaehlpunkte1.getMsg_receiver();
		case BEZ_COLUMN:
			return zaehlpunkte1.getZp_bez();
		case DAT_COLUMN:
			return zaehlpunkte1.getZp_dat();
		case ZLGER_COLUMN:
			return zaehlpunkte1.getZp_zlger();
		case OBIS_COLUMN:
			return zaehlpunkte1.getZp_obis();
		case QUAL_COLUMN:
			return zaehlpunkte1.getZp_qual();
		case ZLSTAND_COLUMN:
			return zaehlpunkte1.getZp_zlstand();
		case ZLGR_COLUMN:
			return zaehlpunkte1.getZp_zlgr();
		case STATUS_COLUMN:
			return zaehlpunkte1.getZp_status();
		case WANDFAK_COLUMN:
			return zaehlpunkte1.getZp_wandfak();
		}
		return null;
	}
}

Der Aufruf des JTable sieht folgendermaßen aus:

Java:
	private JTable getJTableMSCONS() {
		if (jTableMSCONS == null) {
			jTableMSCONS = new JTable();
			jTableMSCONS.setAutoCreateRowSorter(true);
			jTableMSCONS.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
			jTableMSCONS.setModel(new ZaehlpunktTableModel());
			jTableMSCONS.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		}
		return jTableMSCONS;
	}
Ziel ist das die eingelesen Daten in der JTable aufgelistet werden. Dies funktioniert leider nicht.

Leider habe ich in diesem Bereich kaum Erfahrung und komme überhaupt nicht weiter. :bahnhof:

Kann mir ja jemand helfen?

Vielen Dank im Voraus :)
 

MichaFL123

Mitglied
Die Ausgabe sollte dann ungefähr so aussehen:

Sender Empfänger Bezeichnung Datum Gerät OBIS Stand Grund Status Faktor
465469840 648694310 DE9000234RD3242342 01.02.2011 235265 1.80.1.0 484,01 COS EMV 1
465469840 648694310 DE9000234RD3242343 02.02.2011 235266 1.80.1.1 23412 COS EMV 1
465469840 648694310 DE9000234RD3242344 03.02.2011 235267 1.80.1.2 352345 COS EMV 1
465469840 648694310 DE9000234RD3242345 04.02.2011 235268 1.80.1.3 32423 COS EMV 1
465469840 648694310 DE9000234RD3484341 05.02.2011 235269 1.80.1.4 488,01 COS EMV 1
465469840 648694310 DE9000234RD3584311 06.02.2011 235270 1.80.1.5 2342342 COS EMV 1
465469840 648694310 DE9000234RD3888841 07.02.2011 235271 1.80.1.6 2342342 COS EMV 1
 
J

jaavaa

Gast
Du willst Daten der JTable hinzufügen wenn ich es richtig verstehe?
Dafür gibts ne Methode, dafür brauchst du allerdings ein DefaultTableModel, welches du dir z.B.so holen könntest:
Java:
(DefaultTableModel) jTable.getModel()
und dann kannst du einfach mit Hilfe folgenden Methode Datensätze anfügen:
Java:
addRow(String[])

Mfg
 
J

jaavaa

Gast
Ich denke das war ja die Frage.
Er weiß nicht wie er die Daten in die JTable bekommt.
Oder hab ich es jetzt falsch verstanden?
 

MichaFL123

Mitglied
Also eingelesen und verarbeitet werden die Daten in der Klasse FileParser(siehe 1.Betrag) und sollen nach der kompletten Verarbeitung übergeben werden.

Diese Daten möchte ich an das Tabelle übergeben ich hab dafür zwei Methoden im TableModel/(gesamter Code siehe 1. Beitrag) angelegt:
Java:
    public void add(ArrayList<Zaehlpunkt> newZaehlpunkte) {
        int first = zaehlpunkte.size();
        int last = first + newZaehlpunkte.size() - 1;
        zaehlpunkte.addAll(newZaehlpunkte);
        fireTableRowsInserted(first, last); 
    }
    public void add(Zaehlpunkt zaehlpunkt) {
        int index = zaehlpunkte.size();
        zaehlpunkte.add(zaehlpunkt);
        fireTableRowsInserted(index, index);

Meiner Tabelle weise ich nun das TableModel zu

Java:
	private JTable getJTableMSCONS() {
		if (jTableMSCONS == null) {
			jTableMSCONS = new JTable();
			jTableMSCONS.setAutoCreateRowSorter(true);
			jTableMSCONS.setModel(new ZaehlpunktTableModel());
			jTableMSCONS.setPreferredSize(new Dimension(750, 500));
			jTableMSCONS.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

			Dimension viewSize = new Dimension();
			viewSize.width = jTableMSCONS.getColumnModel()
					.getTotalColumnWidth();
			viewSize.height = 10 * jTableMSCONS.getRowHeight();
			jTableMSCONS.setPreferredScrollableViewportSize(viewSize);
		}
		return jTableMSCONS;
	}

Mein Ziel war es das nach einlesen der Dateien meine jTable mit aufbereiteten Daten gefüllt wird die über das TableModel laufen.

Aber ich das funktioniert nicht und ich weiß gar nicht mehr weiter, da sich meine JAVA-Kenntnisse leider sehr in Grenzen halten. Ich bin ja auch erst seit 1 1/2 Wochen dabei...
 

Suinos

Bekanntes Mitglied
In deinem
Code:
FileParser
:
[JAVA=218]
addZaehlpunkt(tmp_zlpnkt);
}

public static void addZaehlpunkt(ArrayList<Zaehlpunkt> tmp_zaehlpunkt) {

}
[/code]
Du machst mit den eingelesenen Daten gar nichts!
An dem Punkt musst du dem Tabellen-Model nur noch mitteilen können, dass dies die neuen Daten sind.
 

MichaFL123

Mitglied
Ohh natürlich :-( wie dumm von mir :-( da hatte ich schon probiert was aber nicht funktioniert hatte - das habe ich wieder rausgelöscht weil ich die Methode im TableModel nicht ansprechen konnte.

Und ich wüsste auch nicht wie ich die Daten übergeben bekomme :-(
 

MichaFL123

Mitglied
Okay ich beschreibe mein Problem anders:

Ich habe einen Parser der Daten zusammen sammelt und in einer ArrayList vom Typ Zaehlpunkt speichert.

Diese ArrayList möchte ich an die Methode addNewMultiData übergeben:

Java:
package testing2;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class ZaehlpunktTableModel extends AbstractTableModel {

	public static final int SENDER_COLUMN 	= 0;
	public static final int RECEIVER_COLUMN = 1;
	public static final int BEZ_COLUMN 		= 2;
	public static final int DAT_COLUMN 		= 3;
	public static final int ZLGER_COLUMN 	= 4;
	public static final int OBIS_COLUMN 	= 5;
	public static final int QUAL_COLUMN     = 6;
	public static final int ZLSTAND_COLUMN  = 7;
	public static final int ZLGR_COLUMN		= 8;
	public static final int STATUS_COLUMN   = 9;
	public static final int WANDFAK_COLUMN  = 10;
	public static final int COLUMN_COUNT    = 11;
	
	private final static ArrayList<Zaehlpunkt> zaehlpunkte = new ArrayList<Zaehlpunkt>();

	public void addNewMutliData(ArrayList<Zaehlpunkt> newZaehlpunkte) {
		int first = zaehlpunkte.size();
		int last = first + newZaehlpunkte.size() - 1;
		zaehlpunkte.addAll(newZaehlpunkte);
		fireTableRowsInserted(first, last);	
	}
	public void addNewSingleData(Zaehlpunkt zaehlpunkt) {
		int index = zaehlpunkte.size();
		zaehlpunkte.add(zaehlpunkt);
		fireTableRowsInserted(index, index);
	}
	
	public void remove(int index){
		zaehlpunkte.remove(index);
	} 
	
	public int getRowCount() {
		return zaehlpunkte.size();
	}
	
	public int getColumnCount() {
		return 10;
	}
	
	@Override
	public Class getColumnClass(int column) {
		return getValueAt(0, column).getClass();	
	}

	public Zaehlpunkt getZaehlpunkt(int row) {
		return zaehlpunkte.get(row);
	}

	public Object getValueAt(int row, int column) {
		Zaehlpunkt zaehlpunkte1 = zaehlpunkte.get(row);
		switch (column) {
		case SENDER_COLUMN:
			return zaehlpunkte1.getMsg_sender();
		case RECEIVER_COLUMN:
			return zaehlpunkte1.getMsg_receiver();
		case BEZ_COLUMN:
			return zaehlpunkte1.getZp_bez();
		case DAT_COLUMN:
			return zaehlpunkte1.getZp_dat();
		case ZLGER_COLUMN:
			return zaehlpunkte1.getZp_zlger();
		case OBIS_COLUMN:
			return zaehlpunkte1.getZp_obis();
		case QUAL_COLUMN:
			return zaehlpunkte1.getZp_qual();
		case ZLSTAND_COLUMN:
			return zaehlpunkte1.getZp_zlstand();
		case ZLGR_COLUMN:
			return zaehlpunkte1.getZp_zlgr();
		case STATUS_COLUMN:
			return zaehlpunkte1.getZp_status();
		case WANDFAK_COLUMN:
			return zaehlpunkte1.getZp_wandfak();
		}
		return null;
	}
	@Override
	public String getColumnName (int columnIndex) {
		String ueberschriften[] = {"Sender", "Empfänger", "Zählpunkt",
				"Zählerdatum", "Gerätenummer",
				"Qualifyer", "Zählerstand",
				"Datum Zählstand", "Status Zählstand",
				"Wandlerfaktor"};
		return ueberschriften[columnIndex];
	}
}

Doch wie bekomme ich die ArrayList vom Parser in die Methode? Habe da wirklich keine Ahnung :-(
 
Zuletzt bearbeitet:
J

jaavaa

Gast
Habe ich das nicht gestern schon geschrieben?
Hier ein Beispiel:

Java:
((DefaultTableModel) jTable.getModel(addRow(new String[]{"Spalte 1", "Spalte 2", "Spalte 3", "Spalte 4", "Spalte 5"})));

Mfg
 

Michael...

Top Contributor
Habe ich das nicht gestern schon geschrieben?
Hier ein Beispiel:

Java:
((DefaultTableModel) jTable.getModel(addRow(new String[]{"Spalte 1", "Spalte 2", "Spalte 3", "Spalte 4", "Spalte 5"})));

Mfg
Es wird kein DefaultTableModel verwendet, sondern ein eigens definiertes TableModel mit entsprechenden add- Methoden, die müssen jetzt nur noch im richtigen Kontext aufgerufen werden.
 

MichaFL123

Mitglied
Genau ich habe ein selbstdefiniertes TableModel geschrieben...
und dank euren Hinweisen werden nach dem Einlesen auf Tabellenzeilen angezeigt - leider gibt es da noch eine Menge Fehler.

Ich habe jetzt folgende Methode implementiert:
Java:
	public static void addZaehlpunkt(ArrayList<Zaehlpunkt> tmp_zlpnkt) {
		
		ZaehlpunktTableModel tableModel = new ZaehlpunktTableModel();
		tableModel.addNewMutliData(tmp_zlpnkt);
	}

Es treten folgende Fehler zu Tage:

1. Die Zeilen werden nach dem Einlesen nicht automatisch/sofort in der Tabelle angezeigt - sondern erst wenn man mit gedrückter Mause-Taste über die Zeilen, da wo sie sein sollten, zieht. Dann tauchen diese erst auf - weiß jemand woran das liegen kann?

2. Wenn ich die mehrere Dateien aufrufe wird die Klasse FileParser jeweils pro Datei einmal aufgerufen. Dabei tritt folgender Fehler auf - die existenten Einträge in der Tabelle werden kopiert und nochmals an die Tabelle angehängt. Das soll aber nicht so sein. Die "neuen" Daten sollen einfach nach den bereits vorhandenen Zeilen in der Tablle angehängt werden.

Hier nochmal das die Klasse Table Model:

Java:
package testing2;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class ZaehlpunktTableModel extends AbstractTableModel {
	
	
	public static final int ID_COLUMN		= 0;
	public static final int SENDER_COLUMN 	= 1;
	public static final int RECEIVER_COLUMN = 2;
	public static final int BEZ_COLUMN 		= 3;
	public static final int DAT_COLUMN 		= 4;
	public static final int ZLGER_COLUMN 	= 5;
	public static final int OBIS_COLUMN 	= 6;
	public static final int QUAL_COLUMN     = 7;
	public static final int ZLSTAND_COLUMN  = 8;
	public static final int ZLGR_COLUMN		= 9;
	public static final int STATUS_COLUMN   = 10;
	public static final int WANDFAK_COLUMN  = 11;
	
	private final static ArrayList<Zaehlpunkt> zaehlpunkte = new ArrayList<Zaehlpunkt>();

	public void addNewMutliData(ArrayList<Zaehlpunkt> newZaehlpunkte) {
	//		for(int i = 0; i < newZaehlpunkte.size(); i++){
		int first = zaehlpunkte.size();
		int last = first + newZaehlpunkte.size() - 1;
		zaehlpunkte.addAll(newZaehlpunkte);
		fireTableRowsInserted(first, last);	
//		zaehlpunkte.add(newZaehlpunkte.get(i));
//		fireTableDataChanged();
		}
//	}
	public void addSingleData(Zaehlpunkt zaehlpunkt) {
		int index = zaehlpunkte.size();
		zaehlpunkte.add(zaehlpunkt);
		fireTableRowsInserted(index, index);
	}
	
	public void remove(int index){
		zaehlpunkte.remove(index);
	} 
	
	public int getRowCount() {
		return zaehlpunkte.size();
	}
	
	public int getColumnCount() {
		return 12;
	}
	@Override
	public Class getColumnClass(int column) {
		return getValueAt(0, column).getClass();	
	}	
	
	
	public Zaehlpunkt getZaehlpunkt(int row) {
		return zaehlpunkte.get(row);
	}
	
	public Object getValueAt(int row, int column) {
		Zaehlpunkt zaehlpunkte1 = zaehlpunkte.get(row);
		switch (column) {
		case ID_COLUMN:
			return zaehlpunkte1.getId();
		case SENDER_COLUMN:
			return zaehlpunkte1.getMsg_sender();
		case RECEIVER_COLUMN:
			return zaehlpunkte1.getMsg_receiver();
		case BEZ_COLUMN:
			return zaehlpunkte1.getZp_bez();
		case DAT_COLUMN:
			return zaehlpunkte1.getZp_dat();
		case ZLGER_COLUMN:
			return zaehlpunkte1.getZp_zlger();
		case OBIS_COLUMN:
			return zaehlpunkte1.getZp_obis();
		case QUAL_COLUMN:
			return zaehlpunkte1.getZp_qual();
		case ZLSTAND_COLUMN:
			return zaehlpunkte1.getZp_zlstand();
		case ZLGR_COLUMN:
			return zaehlpunkte1.getZp_zlgr();
		case STATUS_COLUMN:
			return zaehlpunkte1.getZp_status();
		case WANDFAK_COLUMN:
			return zaehlpunkte1.getZp_wandfak();
		}
		return null;
	}
	@Override
	public String getColumnName (int columnIndex) {
		String ueberschriften[] = {"Id", "Sender", "Empfänger", "Zählpunkt",
				"Zählerdatum", "Gerätenummer", "OBIS-Nr", "Qualifyer", "Zählerstand",
				  "Ablesegrund", "Status Zählstand", "Wandlerfaktor"};
		return ueberschriften[columnIndex];
		
	}
		
	
}

Und der Aufruf meiner Tabelle im der Klasse MainFrame(Anzeige):

Java:
	private JTable getJTableMSCONS() {
		if (jTableMSCONS == null) {
			jTableMSCONS = new JTable();
			jTableMSCONS.setAutoCreateRowSorter(true);
			jTableMSCONS.setModel(new ZaehlpunktTableModel());
			jTableMSCONS.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			Dimension viewSize = new Dimension();
			viewSize.width = jTableMSCONS.getColumnModel().getTotalColumnWidth();
			viewSize.height = 10 * jTableMSCONS.getRowHeight();
			jTableMSCONS.setPreferredSize(viewSize);
		}
		return jTableMSCONS;
	}

Das dynamische Ändern der setPreferredSize nach Tabellen-Größe funktioniert leider auch nicht - er erweitert die Sicht nicht :-(

Wenn ihr Lösungsvorschlage habt würde ich mich sehr freuen :)

Vielen Dank :D
 

Michael...

Top Contributor
Am Model sollte es nicht liegen, der Fehler liegt vermutlich irgendwo drumherum (beim Befüllen des Models?)
JTable berechnet die benötige Größe selbst, ein Setzen der PreferredSize ist unnötig. Wenn die Tabelle nicht wie gewünscht angezeigt wird, liegt es vermutlich an "falsch" gesetzten Attributen der JTable oder des JScrollPane.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
S Fehler beim Programm Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
E Fehler beim Debuggen einer jsp-Datei Java Basics - Anfänger-Themen 3
J Fehler beim Runden Java Basics - Anfänger-Themen 3
V Klassen Fehler beim compilieren einer Datei in CamelCase Java Basics - Anfänger-Themen 2
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
B Input/Output Fehler beim Übertragen eines ObjectOutputStreams. Java Basics - Anfänger-Themen 0
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
W Fehler beim verlängern des Arrays Java Basics - Anfänger-Themen 5
S Fehler beim Ausführen Java Basics - Anfänger-Themen 5
S Seriealiserung Fehler beim Landen Java Basics - Anfänger-Themen 1
Matze 12 häufige Fehler beim Programmieren lernen Java Basics - Anfänger-Themen 2
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
A Erste Schritte Nicht zu findender Fehler beim Auslesen eines Buchstabens Java Basics - Anfänger-Themen 4
X Fehler beim Öffnen von Jar Datei: "kein Hauptmanifestattribut" Java Basics - Anfänger-Themen 5
B Erste Schritte Fehler beim starten Java Basics - Anfänger-Themen 12
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
1 Erste Schritte ständige Fehler beim Ausführen von Hello World Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
F Genereller Fehler beim Starten des Javaprogramms Java Basics - Anfänger-Themen 3
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
F HttpURLConnection Fehler beim Quelltext holen Java Basics - Anfänger-Themen 6
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
D Fehler beim Compilen Java Basics - Anfänger-Themen 8
A Fehler beim Umschreiben in Array Java Basics - Anfänger-Themen 6
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
J Compiler-Fehler .jar Datei erstellt aber beim Ausführen Fehler Java Basics - Anfänger-Themen 5
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
StrikeTom Fehler beim Audiodatei abspielen Java Basics - Anfänger-Themen 4
M Fehler beim Ausführen von runable Jar Java Basics - Anfänger-Themen 9
StrikeTom Fehler beim bildanzeigen Java Basics - Anfänger-Themen 10
A jexcelapi fehler beim einrichten Java Basics - Anfänger-Themen 2
M Fehler beim Compilieren Java Basics - Anfänger-Themen 2
S Fehler beim berechnen von MD5 Java Basics - Anfänger-Themen 7
M Fehler beim Compilieren Java Basics - Anfänger-Themen 4
J Fehler beim Ausführen von Programm Java Basics - Anfänger-Themen 3
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
R Derby-Datenbank: Fehler beim Zugriff im Embedded Modus Java Basics - Anfänger-Themen 27
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
L Fehler beim Aufruf eines Applet Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
C Fehler beim ausgführen von Java App als nicht Admin u. Vista Java Basics - Anfänger-Themen 6
G Fehler beim Ausführen HILFE! Java Basics - Anfänger-Themen 12
H JavaMail: Beim Versenden tritt ein Fehler auf! Java Basics - Anfänger-Themen 4
G Fehler beim ausführen einer JSP Java Basics - Anfänger-Themen 5
K Fehler beim complieren Java Basics - Anfänger-Themen 5
0 Folgender Fehler beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 8
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
T Fehler beim Compilieren Java Basics - Anfänger-Themen 5
G Fehler beim Aufruf eine Javamethode über JSP Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
R Fehler beim Programm Java Basics - Anfänger-Themen 20
G Fehler beim ausführen. Java Basics - Anfänger-Themen 3
W Fehler beim ausführen der Javadateien Java Basics - Anfänger-Themen 3
C Fehler beim build. nur wo? Java Basics - Anfänger-Themen 2
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
J Fehler beim Starten der .class Java Basics - Anfänger-Themen 21
V Fehler beim Kompilieren der Unterklasse Java Basics - Anfänger-Themen 2
G Fehler beim kompilieren Java Basics - Anfänger-Themen 18
E Fehler NullPointer beim Ausführen Java Basics - Anfänger-Themen 4
W Fehler beim Compilen Java Basics - Anfänger-Themen 9
D [JCreator] Einrichten - Fehler beim Kompilieren Java Basics - Anfänger-Themen 14
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
M Problem beim Aufruf einer Methode: Wo is der Fehler? Java Basics - Anfänger-Themen 12
D Fehler beim kompilieren einer Java-Datei (javac) Java Basics - Anfänger-Themen 6
F Fehler beim Schreiben wenn Datei schreibgeschützt abfangen Java Basics - Anfänger-Themen 6
I Fehler beim Compilen Java Basics - Anfänger-Themen 10
T Fehler beim Laden eines Applets Java Basics - Anfänger-Themen 16
O Programm-Fehler beim einlesen von RGB werten Java Basics - Anfänger-Themen 5
F Fraktal fehler beim kompalieren Java Basics - Anfänger-Themen 5
M Fehler beim ein- und auslesen einer Textdatei Java Basics - Anfänger-Themen 5
L Fehler beim ausführen! Java Basics - Anfänger-Themen 14
C Fehler beim Starten einer *.jar Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben