Tabellendaten werden nicht angezeigt

Status
Nicht offen für weitere Antworten.

Java Light

Aktives Mitglied
Hallo zusammen

Ich habe folgendes Problem, meine Tabellendaten werden nicht richtig angezeigt und dies obwohl meine Arrays die Daten übergeben und Sie beim debuggen auch in der Tabelle vorhanden sind. Die Tabelle wird zwar ausgegeben, aber einfach mit "null".

Hier noch der Code mit Erklärung, damit man das vielleicht ein wenig nachvollziehen kann:

Code:
public class ModellTabelle extends AbstractTableModel {

	public String[] buySell = new String[1000];
	public String[] counterparty= new String[1000];
	public String[] datum = new String[1000];
	public String[] energieAngefragt = new String[1000];
	public String[] statusAngefragt = new String[1000];
	public String[] energieGehandelt = new String[1000];
	public String[] statusGehandelt = new String[1000];
	public String test = "haha";
	
	
	public ModellTabelle(String[] buySell, String[] counterparty, String[] datum, String[] energieAngefragt, String[] statusAngefragt, String[] energieGehandelt, String[] statusGehandelt) {

                                //Werte werden übernommen und an String[][] daten weitergeliefert
		this.buySell = buySell;
		this.counterparty = counterparty;
		this.datum = datum;
		this.energieAngefragt = energieAngefragt;
		this.statusAngefragt = statusAngefragt;
		this.energieGehandelt = energieGehandelt;
		this.statusGehandelt = statusGehandelt;
		System.out.println(buySell[0]);
	}
	
	
	String[] datenueberschrift = {
		      "Stunde / Minuten", "15 Minuten", "30 Minuten", "45 Minuten", "60 Minuten"
		    };


	
String[][] daten = {
		      { "Stunde 1", buySell[2], test, datum[0], energieAngefragt[0], },  //<---Die Daten sind in den einzelnen Arrays vorhanden, sieht man im Debugmodus
		      { "Stunde 2", buySell[1], counterparty[1], datum[1], energieAngefragt[1], }
		      }; 
	
	
//	*******************************//
	// Vorbereitung / Muss Methoden //
	//*****************************//
 
	
	//Die Anzahl Reihen
	public int getRowCount() {
		return daten.length;
	}

	//Die Anzahl Kolonnen
	public int getColumnCount() {
		return datenueberschrift.length;
	}

    public String getColumnName(int col) {
        return datenueberschrift[col];
    }
	
	public Object getValueAt(int row, int col) {
		return daten[row][col];    //<---Die Werte aus den Arrays werden nicht mehr angezeigt (nur noch null)
		
	}
	
}

Kann mir jemand sagen was hier das Problem ist? Wo liegt der Fehler?

Besten Dank

JavaLight
 
Hi,

wenn ich die Dokumentation richtig verstehe, dann müsste alles Notwendige schon vorhanden sein:

This abstract class provides default implementations for most of the methods in the TableModel interface. It takes care of the management of listeners and provides some conveniences for generating TableModelEvents and dispatching them to the listeners. To create a concrete TableModel as a subclass of AbstractTableModel you need only provide implementations for the following three methods:

public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
 
Hallo

ja, das sehe ich auch so, da ich meine letzte Tabelle mit einem TableModel auch ohne die Methode fireTableChanged erstellt habe. Ich verstehe aber immer noch nicht,weshalb es nicht funktioniert?
 
Hallo,

Ein AbstractTableModel hält nur die Daten deiner Tabelle und ist dafür zuständig, das andere Componenten darauf zugreifen können.

Ohne die Swingcomponenten, mit dehnen Du deine Tabelle erzeugst und die Listener mit dehnen Du auf Nutzereingaben reagierst kann man keine Fehler finden.

Bitte Poste die Klasse oder Methoden womit Du die Tabelle erzeugst bzw. sie änderst.
 
Wie gewünscht:

Code:
import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

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

public class anzeigen {

	//Variablen einbauen 
	public JTable tabelle;
	public ModellTabelle modelle;
	public String[] buySell = new String[1000];
	public String[] counterparty= new String[1000];
	public String[] datum = new String[1000];
	public String[] energieAngefragt = new String[1000];
	public String[] statusAngefragt = new String[1000];
	public String[] energieGehandelt = new String[1000];
	public String[] statusGehandelt = new String[1000];
	
	
	
	public anzeigen(String[] buySell, String[] counterparty, String[] datum, String[] energieAngefragt, String[] statusAngefragt, String[] energieGehandelt, String[] statusGehandelt) {
		this.buySell = buySell;
		this.counterparty = counterparty;
		this.datum = datum;
		this.energieAngefragt = energieAngefragt;
		this.statusAngefragt = statusAngefragt;
		this.energieGehandelt = energieGehandelt;
		this.statusGehandelt = statusGehandelt;
		System.out.println(buySell[0]);
	}

	//	GridBagLayout vorbereiten
	public void addComponent (Container cont,
			GridBagLayout diversemoegl,
			Component laenderdetails,
			int x, int y,
			int width, int height,
			double weightx, double weighty )


	{
			
			GridBagConstraints grundoberflaechen = new GridBagConstraints();
			grundoberflaechen.fill = GridBagConstraints.BOTH;
			grundoberflaechen.gridx = x; grundoberflaechen.gridy = y;
			grundoberflaechen.gridwidth = width; grundoberflaechen.gridheight = height;
			grundoberflaechen.weightx = weightx; grundoberflaechen.weighty = weighty;
			diversemoegl.setConstraints(laenderdetails, grundoberflaechen);
			cont.add(laenderdetails);
			
	}
	
	public void oberflaecheAnzeigen() {
	 
		
		final JFrame fahrplan = new JFrame("ESS Screen für Gas");
		fahrplan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//Container auf JFrame bauen
		Container laenderdetails = fahrplan.getContentPane();
		//Layoutobjekt festlegen und aufbauen
		GridBagLayout diversemoegl = new GridBagLayout();
		//Layoutobjekt auf Container zuweisen
		laenderdetails.setLayout(diversemoegl);
		
		modelle = new ModellTabelle(buySell, counterparty, datum, energieAngefragt, statusAngefragt, energieGehandelt, statusGehandelt);
		tabelle = new JTable(modelle);
		
		addComponent(laenderdetails,diversemoegl,new JScrollPane(tabelle),0,0,5,5,1,1);
		
		fahrplan.setSize(1000, 800);
		fahrplan.setVisible(true);
		
	}
	
	
}

Besten Dank für Eure Hilfe...ich hoffe jemand kann mir helfen

Grüsse

JavaLight
 
Hallo,

Die Erzeugung der Tabelle schein in Ordnung zu sein.

Meiner Meinung nach liegt das Problem in dem Table-Model.

Probiere mal folgendes:

<code>

public class ModellTabelle extends AbstractTableModel {

public String[] buySell = new String[1000];
public String[] counterparty= new String[1000];
public String[] datum = new String[1000];
public String[] energieAngefragt = new String[1000];
public String[] statusAngefragt = new String[1000];
public String[] energieGehandelt = new String[1000];
public String[] statusGehandelt = new String[1000];
public String test = "haha";

public String[] datenueberschrift = null; // hier neu
public String[][] daten = null; // hier neu

public ModellTabelle(String[] buySell, String[] counterparty, String[] datum, String[] energieAngefragt, String[] statusAngefragt, String[] energieGehandelt, String[] statusGehandelt) {

//Werte werden übernommen und an String[][] daten weitergeliefert
this.buySell = buySell;
this.counterparty = counterparty;
this.datum = datum;
this.energieAngefragt = energieAngefragt;
this.statusAngefragt = statusAngefragt;
this.energieGehandelt = energieGehandelt;
this.statusGehandelt = statusGehandelt;
System.out.println(buySell[0]);

// neu im Konstruktor
datenueberschrift = {
"Stunde / Minuten", "15 Minuten", "30 Minuten", "45 Minuten", "60 Minuten"
};

daten = {
{ "Stunde 1", buySell[2], test, datum[0], energieAngefragt[0], }, //<---Die Daten sind in den einzelnen Arrays vorhanden, sieht man im Debugmodus
{ "Stunde 2", buySell[1], counterparty[1], datum[1], energieAngefragt[1], }
};
}


// *******************************//
// Vorbereitung / Muss Methoden //
//*****************************//


//Die Anzahl Reihen
public int getRowCount() {
return daten.length;
}

//Die Anzahl Kolonnen
public int getColumnCount() {
return datenueberschrift.length;
}

public String getColumnName(int col) {
return datenueberschrift[col];
}

public Object getValueAt(int row, int col) {
return daten[row][col]; //<---Die Werte aus den Arrays werden nicht mehr angezeigt (nur noch null)

}

}

</code>

Ich denke so sollte es funktionieren.
 
Hey super!!! Danke vielmals... 🙂 Es funktioniert! Was habe ich genau falsch gemacht, weshalb funktionierte es nicht?

Besten Dank für Eure Hilfen...

Bis bald

JavaLight[/u]
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben