Meine Tabelle wird mir nicht angezeigt :(

Amnesia

Grünschnabel
Hey ihr...
wie der Titel schon sagt, wird mir meine JTable die ich erstellt habe nicht auf meinem Frame angezeigt:

Also zum Listing:

Ich erstelle die Tabelle mit der Methode "addTable" und will sie dann über den Button "aktual" zu meinem Frame hinzufügen.

Doch wenn ich den Button hitte passiert nix :(
---------------------------------------------
Code:
package inventur;

//Imports
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class GUI {

	// Member
	private static GUI instance;
	private JFrame frame;
	public ArrayList<Artikel> ArtikelListe;
	public JTable table;
	JButton aktual;

	// Konstruktor
	private GUI() {
		ArtikelListe = new ArrayList();
	}

	// Initialisieren des GUI-Objekts
	public static GUI getInstance() {
		if (instance == null) {
			instance = new GUI();
		}
		return instance;

	}

	// Start des Programms
	public void start() {
		// StartFrame
		frame = new JFrame("Ralf's Inventur v 1.0");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(1000, 1000);
		frame.setVisible(true);

		// Menü-Leiste
		JMenuBar menü = new JMenuBar();

		// Menü-Leiste *** Reiter Stammdaten
		JMenu menüStamm = new JMenu("Stammdaten");
		JMenuItem artFüg = new JMenuItem("Artikel hinzufügen");
		JMenuItem artLösch = new JMenuItem("Artikel löschen");
		JMenuItem artList = new JMenuItem("Artikel auflisten");

		artFüg.addActionListener(new artikelFügListener());
		/*
		 * artLösch.addActionListener(new artikelLöschListener());
		 * artList.addActionListener(new artikelListListener());
		 */
		menüStamm.add(artFüg);
		menüStamm.add(artLösch);
		menüStamm.add(artList);
		menü.add(menüStamm);

		// Menü-Leiste *** Reiter Inventur
		JMenu menüInventur = new JMenu("Inventur");
		JMenuItem neu = new JMenuItem("Neue Inventur");
		JMenuItem lad = new JMenuItem("Inventur laden");
		/*
		 * neu.addActionListener(new neuInvListener());
		 * lad.addActionListener(new invLadListener());
		 */
		menüInventur.add(neu);
		menüInventur.add(lad);
		menü.add(menüInventur);

		// Aktualisieren der Tabelle
		aktual = new JButton("Aktualisieren");
		aktual.addActionListener(new aktualListener());
		aktual.setBounds(10, 10, 100, 20);
		

		// Hinzufügen der Menuleiste zum Frame
		frame.setLayout(null);
		frame.setJMenuBar(menü);
		frame.add(aktual);

	}

	public JTable addTable(ArrayList<Artikel> ArtikelListe) {
		String[] spalten = { "ID", "Artikelname", "Bezeichnung",
				"Preis (inkl.19% MwSt.)", "Stückzahl",
				"Gesamtwert (inkl.19% MwSt.)" };
		Object[][] reihen = new Object[ArtikelListe.size()][6];
		int i = 0;
		for (Artikel art : ArtikelListe) {
			reihen[i][0] = new Integer(art.getId());
			reihen[i][1] = "" + art.getName();
			reihen[i][2] = "" + art.getBezeichnung();
			reihen[i][3] = new Double(art.getPreis());
			reihen[i][4] = new Integer(art.getAnzahl());
			reihen[i][5] = new Double(art.getPreis() * art.getAnzahl());
			i++;
		}
		return new JTable(reihen, spalten);
	}

	// Listener - Artikel hinzufügen
	public class artikelFügListener implements ActionListener {
		public void actionPerformed(ActionEvent av) {
			new ArtFügFrame(instance).los();
		}
	}
	// Listener - Aktualisieren
	public class aktualListener implements ActionListener{
		JTable tab;
		JPanel pan = new JPanel();
		public void actionPerformed(ActionEvent av){
			tab=addTable(ArtikelListe);
			tab.setBounds(10, 100, 700, 700);
			pan.add(tab);
			frame.add(pan);
		}
	}
}
---------------------------------------------
Wisst ihr evtl was****

Die Inhalte für meine Tabelle bekomme ich über eine ArrayList die ich über ein weiteres Frame mit Daten fülle.

Würde mich auf helfende Antworten echt freuen, da ich beinah am verzweifeln bin :(

Liebe Grüße und gute Nacht
Amnesia
 
Zuletzt bearbeitet:
Moin,

(a) bitte benutze die Java-Tags, um den Code leserlich darzustellen (dies erhöht die Chance, dass sich damit auseinander setzt erheblich) :-)
(b) Umlaute in Bezeichnern sind generell kein gute Idee ! ! !
(c) was genau versucht Du denn da im ActionListener am Schluß :confused:

Gruß
Klaus
 
Zuletzt bearbeitet:
Hey,
danke für die schnelle Antwort.

Also zum ActionListener:
Ich möchte durch drücken des Buttons "aktual" auf meinem Mainframe, dass eine Tabelle erscheint mit Inhalten aus ner Arraylist. Da ich nicht weiß ich Inhalte iener bestehenden Tabelle hinzufüge, hab ich mir gedacht ich erstelle die Tabelle jedes Mal aufs neue in der actionperformed.
Das mit dem Panel war nur irgend ein Rotz.. das kann da ja weg.
Aber selbst ohne Panel bekomm ich aufn Frame nix angezeigt.

Hoffe ich konnte mein Problem konkretisieren

LG
Amnesia
 
Moin,

Also zum ActionListener:
Ich möchte durch drücken des Buttons "aktual" auf meinem Mainframe, dass eine Tabelle erscheint mit Inhalten aus ner Arraylist. Da ich nicht weiß ich Inhalte iener bestehenden Tabelle hinzufüge, hab ich mir gedacht ich erstelle die Tabelle jedes Mal aufs neue in der actionperformed.
also, die Variablen da lokal anzulegen, ist sicher nicht gut, da das neue Objekt dann auch nur dort (im dem Gültigkeitsbereich) bekannt ist !
Leg' sie einfach mal als Membvervariable in der Klasse an ...

Auch am Ende von "addTable()" gibst Du mit
Java:
return new JTable( ... );
bei jedem Aufruf ein neues Objekt zurück !!


Und entferne - wie schon geshrieben - bitte alle Umlaute .... davon bekommt man ja Augenkrebs :p

Gruß
Klaus
 
Inhalte einer Tabelle hinzufügen oder entfernen tut man über das Model. Das DefaultTableModel ist da eine sehr gute Sache, die einem das Arbeiten mit den Daten einer Tabelle sehr leicht macht. Du brauchst da keine 1.000 Tabellen erzeugen und hinzufügen, zumal das ohnehin nicht der Hit ist.
 
Also hab nu die JTable als Member deklariert und sie in der actionPerformed mit mit addTable() initialisiert. Trotzdem bekomm ich nix angezeigt... Kanns sein dass ich irgendwas grundlegendes vergesse? Ka.. kenn mich mit JTables halt ma so gar net aus.. muss ich da noch ne Größe festsetzen oder sowas..

Gruß
Amnesia
 
Zurück