Hallo, wir ham gestern im Unterricht JTable angefangen, jetzt hab ich daheim mal ein wenig rumprobiert und ein kleines programm mit Hilfe der Beispiele aus dem Unterricht erstellt.
Jetzt habe ich nur ein kleines Porblem, die Spaltenbeschriftungen werden nicht mit ausgegeben.....
Hier mein coding:
vlt hat jmd ne idee.... is bestimmt wieder nur nen dummer fehler....
Jetzt habe ich nur ein kleines Porblem, die Spaltenbeschriftungen werden nicht mit ausgegeben.....
Hier mein coding:
Java:
import java.awt.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class JTableBeispiel extends JFrame
{
// Beschriftung der Spaltenköpfe
// Anfang Attribute
private String[] spalten = {"Nummer", "Kategorie",
"Bezeichnung", "Preis"};
// Daten der Tabelle
private String[][] daten = {
{"100001", "Getränke", "Wein", "11.68"},
{"100002", "Gewürze", "Pfeffer", "2.56"},
{"100003", "Süßwaren", "Schokolade", "0.99"},
{"100004", "Milchprodukte", "Käse", "1.93"} };
// Ende Attribute
public JTableBeispiel()
{
super ("Beispiel: JTable");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
// Datenmodell der Tabelle
TableModel dm = new DefaultTableModel (daten, spalten);
// Tabelle mit Datenmodell erzeugen
JTable tabelle = new JTable (dm);
// Ausgabe erzeugen
Ausgabe ausgabe = new Ausgabe (dm);
// Ausgabe beim Datenmodell 'dm' registrieren
dm.addTableModelListener (ausgabe);
add (tabelle, BorderLayout.CENTER);
add (ausgabe, BorderLayout.SOUTH);
setSize (320,133);
// Anfang Komponenten
// Ende Komponenten
}
// Anfang Methoden
// Die Klasse Ausgabe errechnet den Gesamtpreis der Produkte und
// zeigt ihn an.
class Ausgabe extends JLabel implements TableModelListener
{
// Anfang Attribute1
private static final long serialVersionUID = 1L;
private NumberFormat nf =
NumberFormat.getCurrencyInstance (Locale.GERMANY);
// Ende Attribute1
public Ausgabe (TableModel model)
{
// Gesamtpreis berechnen
float gesamt = berechnePreis (model);
// Preis formatieren und anzeigen
setText ("Gesamtpreis: " + nf.format (gesamt));
// Anfang Komponenten1
// Ende Komponenten1
}
// Anfang Methoden1
// Berechnet den Gesamtpreis
private float berechnePreis (TableModel model)
{
int zeilen = model.getRowCount();
float gesamt = 0;
for (int i = 0; i < zeilen; i++)
{
try
{
String preis = (String) model.getValueAt (i, 3);
gesamt += Float.parseFloat (preis);
}
catch (Exception e)
{
}
}
return gesamt;
}
// Ereignisbehandlung: Diese Methode wird aufgerufen,
// sobald sich die Daten der Tabelle ändern
public void tableChanged (TableModelEvent e)
{
// Datenmodell holen
TableModel tm = (TableModel) e.getSource();
// Berechnet den Gesamtpreis neu
float gesamt = berechnePreis (tm);
// Anzeige aktualisieren
setText ("Gesamtpreis: " + nf.format (gesamt));
}
// Ende Methoden1
}
public static void main (String[] args)
{
JTableBeispiel fenster = new JTableBeispiel();
fenster.setVisible (true);
}
// Ende Methoden
}
vlt hat jmd ne idee.... is bestimmt wieder nur nen dummer fehler....