JTable Spaltenüberschrift fehlt

IcocaI

Mitglied
Hallo Leute ... ich hab gegoogelt, forums nachgelesen, im buch abgeschrieben und trotzdem will mir das Programm nicht die Tabelle anzeigen! ... ich weiß nicht mehr weiter hab auch geguckt, ob es vllt an der Version liegen könnte aber das wars auch nicht ...

hier der code:
Code:
Object[][] tabInhalt = { { new Integer(1), new Double(3.7), "01:00" },
				{ new Integer(2), new Double(3.3), "02:00" },
				{ new Integer(3), "keinWert", "03:00" } };

		String[] spalten = { "Nummer", "Messwert", "Uhreit" };

		DefaultTableModel model;
		model = new DefaultTableModel(tabInhalt, spalten);
		JTable table = new JTable(model);
		JScrollPane sPane = new JScrollPane(table);
		getContentPane().add(sPane);

woran liegt der fehler?
 
komisch komisch komisch ... ich habs mal ausnahmstweise ins frame getan weil ich das vorher im panel hatte aber ging auch nicht... kann es vllt daran liegen, das sie durch irgendeine andere funktion sozusagen "unterbrochen" wird? Oo ...

hier mal der ganzer code vllt kommt man der lösung näher ...

Code:
/*
 *  Programm zum Auslesen von 
 */
package de.core;

import java.awt.Toolkit;
import javax.swing.JFrame;

public class Controller {
	
	private String user = new String("root");
	private String password = new String("");
		
	public static void main(String[] args) {
		new Controller().init();
	}
	
	public void init(){
		new View();
		this.beep();
	}

	public void beep(){
		JFrame jFrame = new JFrame();
		Toolkit tk = jFrame.getToolkit();
		tk.beep();
	}
	
	public void beenden(){
		// Schließen
		System.exit(1);
	}
	
	public String getUser(){
		return this.user;
	}
	
	public String getPassword(){
		return this.password;
	}
}

Code:
package de.core;

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Scrollbar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class View extends JFrame implements ActionListener {

	private Controller controller = new Controller();

	private JButton jbtnOK = new JButton();
	private JLabel jlblDBAuswahl = new JLabel();
	@SuppressWarnings("unused")
	private JLabel jlblTabelleAuswahl = new JLabel();
	private JLabel jlblAlleAuswaehlenOderEntfernen = new JLabel();
	private JTextField jtxtSuche = new JTextField();
	private Choice choiceDBAuswahl = new Choice();
	private Choice choiceTabelleAuswahl = new Choice();
	private Scrollbar sbTabelle = new Scrollbar();
	//public JTable jTable = new JTable();

	private JMenuBar jmnuBar = new JMenuBar();
	private JMenu jmnuMenu = new JMenu();
	private JMenuItem jmnuItemBeenden = new JMenuItem();
	private JFrame jFrame = new JFrame();

	public View() {
		this.jPanel();
		this.jFrame();
	}

	public void jFrame() {
		// jFrame.setLayout(null);
		jFrame.setResizable(true);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Text der Titelleiste festlegen
		jFrame.setTitle("MicroDimension - Verwaltung");
		// Fenstergröße festlegen
		jFrame.setSize(1024, 640);
		// Fensterposition festlegen
		jFrame.setLocation(150, 80);
		// Farbe des Fensters: blau
		jFrame.setBackground(Color.blue);
		// Fenster anzeigen
		jFrame.setVisible(true);
		// Cursorform erstellen
		jFrame.setCursor(new Cursor(Cursor.HAND_CURSOR));
	}

	public void jPanel() {
		JPanel jPanel = new JPanel();
		jPanel.setVisible(true);
		jPanel.setLayout(null);
		jFrame.add(jPanel);
		
		Object[][] tabInhalt = { { new Integer(1), new Double(3.7), "01:00" },
				{ new Integer(2), new Double(3.3), "02:00" },
				{ new Integer(3), "keinWert", "03:00" } };
		
		String[] spalten = { "Nummer", "Messwert", "Uhrzeit" };
		
		JTable table = new JTable(tabInhalt, spalten);
		jPanel.add(new JScrollPane(table));
		
		
		// Menübar
		this.setJMenuBar(jmnuBar);
		jmnuBar.setBounds(0, 0, 1024, 30);
		jmnuMenu.setText("Datei");
		jmnuItemBeenden.setText("Beenden");
		// Menübar an dem JPanel hinzufügen
		jPanel.add(jmnuBar);
		// Menü an dem Menübar hinzufügen
		jmnuBar.add(jmnuMenu);
		// MenüItem an dem Menü hinzufügen
		jmnuMenu.add(jmnuItemBeenden);

		// Die Swing-Komponenten beschriften, Größe ändern und Position
		// bestimmen
		jbtnOK.setText("OK");
		jbtnOK.setBounds(10, 550, 100, 20);
		jlblDBAuswahl.setText("Datenbank");
		jlblDBAuswahl.setBounds(10, 100, 100, 30);
		jlblAlleAuswaehlenOderEntfernen
				.setText("Alle auswählen/entfernen markierte");
		jlblAlleAuswaehlenOderEntfernen.setBounds(10, 250, 230, 30);
		jtxtSuche.setText("Suche...");
		jtxtSuche.setBounds(10, 350, 200, 20);
		choiceDBAuswahl.setBounds(10, 135, 200, 20);
		choiceTabelleAuswahl.setBounds(10, 285, 200, 20);
		sbTabelle.setBounds(250, 100, 20, 400);
		table.setBounds(271, 100, 700, 400);
//		table.setShowGrid(true);
//		table.setGridColor(Color.BLACK);
//		table.setSelectionBackground(Color.BLUE);
//		jTable.setBounds(271, 100, 700, 400);
//		jTable.setShowGrid(true);
//		jTable.setGridColor(Color.BLACK);
//		jTable.setSelectionBackground(Color.BLUE);

		// Die Swing-Komponenten dem JPanel hinzufügen
		jPanel.add(jbtnOK);
		jPanel.add(jlblDBAuswahl);
		jPanel.add(jlblAlleAuswaehlenOderEntfernen);
		jPanel.add(jtxtSuche);
		jPanel.add(choiceDBAuswahl);
		jPanel.add(choiceTabelleAuswahl);
		jPanel.add(sbTabelle);
		//jPanel.add(jTable);
		jPanel.add(table);

		// Die jeweiligen Swing-Komponenten dem JPanel hinzufügen
		jbtnOK.addActionListener(this);
		jmnuItemBeenden.addActionListener(this);
	}

	public void actionPerformed(ActionEvent ae) {
		// Prüfe, was für Ereignisse aktiviert worden sind
		if (ae.getSource() instanceof JMenuItem) {
			if (ae.getActionCommand().equals("Beenden")) {
				controller.beenden();
			}
		}
	}
}
 
Code:
		jPanel.add(new JScrollPane(table));


Du addest ein neues JScrollPane ohne eigenschaften auf ein Panel mit null layout? Warum benutzt du keinen Layoutmanager? Mir war mal so, dass ich Probleme mit einem JTable hatte, also ich das Null-Layout verwendet habe.
 
Weil der mir sonst das Layout durcheinander schießt ... so kann ich das ja so machen wie ich es will ... hmm .. was meinst du mit eigenschaften? z.B.setBounds und so? ich steh momentan aufm schlauch weil ich daran schon fast 1 oder 2 stunden sitze nur um den kleinen fehler ausfindig zu machen ... ich hab auch alles auskommentiert und nur das von der tabelle stehn gelassen und nacheinander alles wieder die kommentare weg gemacht... es hat sich nichts verändert.. .
 
Wenn du "new JScrollPane" aufrufst, dann setzt du keine spezifischen Eigenschaften wie Postion, Größe etc.
Und wie gesagt ich hatte mal Probleme mit dem Null-Layout. Teste doch deine Tabelle einfahc mal mit einem anderen Layout, völlig ungeachtet dessen, dass deine Komponenten durcheinander fliegen (die kannst du ja auskommentieren, wie du es schon getan hast).
 
:rolleyes: habs geschafft XD .... also ich denke mein fehler war es, dass ich eine tabelle erstellt habe wo nur die daten ausgegeben werden ohne tabellenüberschrift ... und wie ich jetzt festgestellt habe ist das jscrollpane noch so ne weitere art von fenster ist :suspekt: ^^ ... so nun hab ich die größe der alten tabelle ans jscrollpane gegeben und die alte tabelle aus dem code genommen ... danach nur noch das jscrollpane ans panel anmelden und siehe da überschrift + datensätze XD ... man war das ne arbeit aber es hat sich gelohnt ^^ jetzt weiß ich wieder was mehr ... danke für eure hilfe hier nochmal der code wies jetzt aussieht :

Code:
package de.core;

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Scrollbar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class View extends JFrame implements ActionListener {

	private Controller controller = new Controller();

	private JButton jbtnOK = new JButton();
	private JLabel jlblDBAuswahl = new JLabel();
	@SuppressWarnings("unused")
	private JLabel jlblTabelleAuswahl = new JLabel();
	private JLabel jlblAlleAuswaehlenOderEntfernen = new JLabel();
	private JTextField jtxtSuche = new JTextField();
	private Choice choiceDBAuswahl = new Choice();
	private Choice choiceTabelleAuswahl = new Choice();
	private Scrollbar sbTabelle = new Scrollbar();
	//public JTable jTable = new JTable();

	private JMenuBar jmnuBar = new JMenuBar();
	private JMenu jmnuMenu = new JMenu();
	private JMenuItem jmnuItemBeenden = new JMenuItem();
	private JFrame jFrame = new JFrame();

	public View() {
		this.jPanel();
		this.jFrame();
	}

	public void jFrame() {
		// jFrame.setLayout(null);
		jFrame.setResizable(true);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// Text der Titelleiste festlegen
		jFrame.setTitle("MicroDimension - Verwaltung");
		// Fenstergröße festlegen
		jFrame.setSize(1024, 640);
		// Fensterposition festlegen
		jFrame.setLocation(150, 80);
		// Farbe des Fensters: blau
		jFrame.setBackground(Color.blue);
		// Fenster anzeigen
		jFrame.setVisible(true);
		// Cursorform erstellen
		jFrame.setCursor(new Cursor(Cursor.HAND_CURSOR));
	}

	public void jPanel() {
		JPanel jPanel = new JPanel();
		jPanel.setVisible(true);
		jPanel.setLayout(null);
		jFrame.add(jPanel);
		
		Object[][] tabInhalt = { { new Integer(1), new Double(3.7), "01:00" },
				{ new Integer(2), new Double(3.3), "02:00" },
				{ new Integer(3), "keinWert", "03:00" } };
		
		String[] spalten = { "Nummer", "Messwert", "Uhrzeit" };
		
		JTable table = new JTable(tabInhalt, spalten);
		JScrollPane sPane = new JScrollPane(table);
		sPane.setBounds(271, 100, 700, 400);
		jPanel.add(sPane);
		
		// Menübar
		this.setJMenuBar(jmnuBar);
		jmnuBar.setBounds(0, 0, 1024, 30);
		jmnuMenu.setText("Datei");
		jmnuItemBeenden.setText("Beenden");
		// Menübar an dem JPanel hinzufügen
		jPanel.add(jmnuBar);
		// Menü an dem Menübar hinzufügen
		jmnuBar.add(jmnuMenu);
		// MenüItem an dem Menü hinzufügen
		jmnuMenu.add(jmnuItemBeenden);

		// Die Swing-Komponenten beschriften, Größe ändern und Position
		// bestimmen
		jbtnOK.setText("OK");
		jbtnOK.setBounds(10, 550, 100, 20);
		jlblDBAuswahl.setText("Datenbank");
		jlblDBAuswahl.setBounds(10, 100, 100, 30);
		jlblAlleAuswaehlenOderEntfernen
				.setText("Alle auswählen/entfernen markierte");
		jlblAlleAuswaehlenOderEntfernen.setBounds(10, 250, 230, 30);
		jtxtSuche.setText("Suche...");
		jtxtSuche.setBounds(10, 350, 200, 20);
		choiceDBAuswahl.setBounds(10, 135, 200, 20);
		choiceTabelleAuswahl.setBounds(10, 285, 200, 20);
		sbTabelle.setBounds(250, 100, 20, 400);

		// Die Swing-Komponenten dem JPanel hinzufügen
		jPanel.add(jbtnOK);
		jPanel.add(jlblDBAuswahl);
		jPanel.add(jlblAlleAuswaehlenOderEntfernen);
		jPanel.add(jtxtSuche);
		jPanel.add(choiceDBAuswahl);
		jPanel.add(choiceTabelleAuswahl);
		jPanel.add(sbTabelle);

		// Die jeweiligen Swing-Komponenten dem JPanel hinzufügen
		jbtnOK.addActionListener(this);
		jmnuItemBeenden.addActionListener(this);
	}

	public void actionPerformed(ActionEvent ae) {
		// Prüfe, was für Ereignisse aktiviert worden sind
		if (ae.getSource() instanceof JMenuItem) {
			if (ae.getActionCommand().equals("Beenden")) {
				controller.beenden();
			}
		}
	}
}

jo wusste nach mehrerem durchlesen von deinem post wieder was gemeint war ^^ ... nochmals danke ach und am layout hats nicht gelegen :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück