JTable bleibt leer :(

Davtorik

Mitglied
HI Community, ich hab ein problem mit JTables, ich bekomm einfach keine Werte angezeigt, weiß nicht, woran es liegt, könnt ihr mal den Code hier überfliegen?

Hier mal die Klassen, die es u.a. betrifft
Code:
class JGesamtliste extends JPanel {

/**
 * Erzeugt ein Objekt der Klasse neueEingabe
 */	
	private NeueEingabe Eingabe =new NeueEingabe();

/**	
 * Erzeugt ein neues Objekt der Klass EInkaufsliste
 */
	
	private Einkaufsliste EL =new Einkaufsliste();
/**
 * 
 * Erzeugt ein Objekt der Klasse neueSuche
 */
	private NeueSuche Suche =new NeueSuche();
/**
 * Erzeugt die Überschriften der Haupt-Tabelle
 */
	private final String[] header = {"Datum","Bewohner","Ort", "Betrag"};
	
/**
 * Erzeugt ein neues JTable
 */	
	private JTable table = new JTable();
/**
 * Erzeugt einen Button zum Bearbeiten
 */
	private JButton bearbeiten=new JButton("Eintrag bearbeiten");

/**
 * Erzeugt einen Button zum Löschen
 */
	private JButton loeschen =new JButton("Eintrag löschen");
/**
 * Erzeugt ein neues DefaultTableModel
 */   
	private DefaultTableModel model =new DefaultTableModel(EL.getunsereEinkaufsliste(), header);
	JGesamtliste() {
   
    	setBackground(Color.yellow);
        setBorder(new TitledBorder("Liste aller Einkäufe")); 
		setLayout(null);		
		table.setModel(model);
		bearbeiten.setBounds(570,60,160,30);
		bearbeiten.setMnemonic(KeyEvent.VK_E);
		loeschen.setBounds(570,100,160,30);
		loeschen.setMnemonic(KeyEvent.VK_C);
		JPanel orangeFrame=new JPanel();
		orangeFrame.setBackground(Color.orange);
		orangeFrame.setBounds(40,40,700,320);
		JScrollPane scroll=new JScrollPane(table);
		scroll.setPreferredSize(new Dimension(340,310));

		scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
        orangeFrame.add(scroll);

        add(bearbeiten);
        add(loeschen);
        add(orangeFrame);
		add(Suche);
        add(Eingabe);
        setVisible(true);
      
        
        
	}
}
:

und
Code:
import java.io.*;
import java.text.DateFormat;
import java.util.*;
/**Die Klasse Einkaufsliste stellt die Verwaltung einer WG-Einkaufsliste da, hier finden sich alle operativen Methoden
 * zur Ver- und Bearbeitung aller erfassten Einkäufe
 * 
 *@author David Stein
 *@version 4.beta 05.05.06 
 *   
 */
    public class Einkaufsliste {
/**
 * ereugt einen Verctor, in dem Einkauf-Objekte gespeichert sind
 */
    public Vector<Einkauf> unsereEinkaufsliste=new Vector<Einkauf>();
/**
 * legt den Speichernamen fest
 */
    private final String DATEINAME = "Einkaufsliste.dat";
/**
 * Liefert flse, wenn etwqas mit der Aufnahme nicht geklappt hat
 */	
    private boolean aufnahmeErfolgreich;
/**
 * Speichert einen mit Einkaufs-Objekten gefüllten Vector auf der Festplatte.
 * @param unsereEinkaufsliste die vorliegende Eikaufsliste
 */	
	private void speichereEinkaufsliste(Vector unsereEinkaufsliste){
		
	
			try {
	        	File kartei = new File (DATEINAME);
	            FileOutputStream filestream = new FileOutputStream (kartei);
	        	ObjectOutputStream out = new ObjectOutputStream (filestream);
	        	
	        	out.writeObject(unsereEinkaufsliste);
	        	out.close();
	        }
	        catch (IOException e) {aufnahmeErfolgreich=false; }
	        		
	}

	/**
	 * Öffnet die vorligende Einkaufsliste um nach Einkäufen zu suchen.
	 *
	 */

	 @SuppressWarnings("unchecked")
	private void oeffneEinkaufsliste(){
		try {
	      FileInputStream file = new FileInputStream(DATEINAME);
	      ObjectInputStream in = new ObjectInputStream( file );
	      unsereEinkaufsliste=(Vector<Einkauf>)in.readObject();
	      in.close();
	    }
	    catch (IOException e) { }
	    catch ( ClassNotFoundException e ) {  }


	 }
/**
 * Liefert die GesamtBetrags-Liste
 * @return Die GesamtBetrags-Liste
 */	
	public String[][] getGesamtBetragsListe(){
		for (int i=0; i<getBewohnerListe().size();i++){
			gesamtBetragsListe[i][0]=getBewohnerListe().elementAt(i);
			double addition=0;
			for (int j=0; j<getGesamtanzahl();j++){
				if (unsereEinkaufsliste.elementAt(j).getBewohner().compareTo(getBewohnerListe().elementAt(i))==0){
					gesamtBetragsListe[i][1]=String.valueOf(addition + Double.parseDouble(unsereEinkaufsliste.elementAt(i).getPreis()));
				};
			}
		}
		return gesamtBetragsListe;
	};
	 /**
	  * Erstellt einen neuen Einkaufs-Eintrag in der Datenbank
	  * @param neuerEinkauf Ein Einkauf-Objekt
	  * @return aufnahmeErfolgreich Bestätigung, dass Einkauf aufgenommen wurden konnte.
	  */
	 public boolean neuerEinkauf(Einkauf neuerEinkauf){
		unsereEinkaufsliste.add(neuerEinkauf);
		speichereEinkaufsliste(unsereEinkaufsliste); 
		return aufnahmeErfolgreich;
	 };


/**
 * Liefert die Daten aller bekannten einkäufe als zweidimensionales Array
 * @return Zweidimensionales Array mit Einkauf-Werten (ohne Einkaufs-Nr.)
 */
	 public String[][] getunsereEinkaufsliste(){
		    GregorianCalendar datum;
		 	String[][] anzeigeArray =new String[getGesamtanzahl()][4];
			for (int i=0; i<getGesamtanzahl();i++){
				DateFormat dateformat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.GERMANY); 
                datum = unsereEinkaufsliste.elementAt(i).getDatum(); 
                String neuesDatum = dateformat.format(datum.getTime()); 

				anzeigeArray[i][0]=neuesDatum;
				anzeigeArray[i][1]=unsereEinkaufsliste.elementAt(i).getBewohner();
				anzeigeArray[i][2]=unsereEinkaufsliste.elementAt(i).getOrt();
				anzeigeArray[i][3]=unsereEinkaufsliste.elementAt(i).getPreis();
			}
			
			return anzeigeArray;
		}
}

:confused:


Vielen Dank im Vorraus
David
 
Hallo David,

der Code ist aber ziemlich unvollständig. Wenn man schon eine Frage über einen fertigen "langen" Code hat, sollte er zumindest compilierbar, oder zumindest vollständig sein (!) .


Vg Erdal
 
Hmm, ich dachte es wäre eher ne zumutung alles zu posten...ich werd das komplette programm mal anhängen...


lg david
 

Anhänge

  • fürsForum.zip
    101,3 KB · Aufrufe: 23
Hallo !

Probier mal:
DefaultTableModel.fireTableDataChanged();

evtl. auch:
DefaultTableModel.fireTableStructureChanged();

auszuführen, nachdem du die Daten dem TableModel hinzugefügt hast. Damit wird die Tabelle benachrichtigt, dass neue Daten vorliegen und sie wird neu gezeichnet.

Gruß Stefan
 
hat sich erledigt :)

hab versehentlich unterschiedliche objekte einer klasse erzeugt, sowas das was ich angezeigt habimmer leer war ^^
 
Zurück