Hi,
ich brauch mal wieder Eure Hilfe. Ich habe in meinem GUI ein JTable angelegt. Wenn ich Eintragungen lösche wirds auch getan, aber ich schaffe es nicht das das JTable aktualisiert. Sitze da schon seit Stunden dran bekomme das aber nicht hin :x
Was kann ich da machen?
(Kann mir noch jemand erzählen wie ich im ActionListener auf Variablen zugreifen kann die nicht final sind?)
ich brauch mal wieder Eure Hilfe. Ich habe in meinem GUI ein JTable angelegt. Wenn ich Eintragungen lösche wirds auch getan, aber ich schaffe es nicht das das JTable aktualisiert. Sitze da schon seit Stunden dran bekomme das aber nicht hin :x
Was kann ich da machen?
(Kann mir noch jemand erzählen wie ich im ActionListener auf Variablen zugreifen kann die nicht final sind?)
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.io.*;
public class MainMenu extends JFrame{
Auto a1 = new Auto();
public MainMenu(String kennzeichen){
super("Spritkosten Manager");
//Auto laden !!!!
try{
ObjectInputStream in = new ObjectInputStream(new FileInputStream(kennzeichen + ".car"));
a1 = (Auto)in.readObject();
System.out.println("Laden erfolgreich");
}catch(IOException e){
System.out.println("Da ging was mit dem Laden nicht");
}catch(ClassNotFoundException ce) {
System.out.println("Da ging was mit den Klassen nicht");
}
//JFrame geht los :)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//JPannels initialisieren
JPanel kennzeichenAnzeige = new JPanel();
kennzeichenAnzeige.setLayout(new FlowLayout(FlowLayout.CENTER));
JPanel options = new JPanel();
options.setLayout(new FlowLayout(FlowLayout.CENTER));
final JPanel tabelle = new JPanel();
tabelle.setLayout(new FlowLayout());
JPanel funktionen = new JPanel();
funktionen.setLayout(new GridLayout(8,2));
//JPanel kennzeichenAnzeige
JLabel JKennzeichen = new JLabel(kennzeichen);
kennzeichenAnzeige.add(JKennzeichen);
//JPanel options
JButton speichern = new JButton("Speichern");
JButton hilfe = new JButton("Hilfe");
options.add(speichern);
options.add(hilfe);
//JPanel tabelle
String[] spalten = {"Nr", "km-Stand", "gefahren", "getankt", "Preis/l", "GesamtPreis", "l/100km", "Reichw.", "Datum", "Bem."};
String[][] daten = macheDaten(a1);
final JTable Jtabelle = new JTable (daten, spalten);
JScrollPane scrollPane = new JScrollPane(Jtabelle);
tabelle.add(scrollPane);
//JPanel funktionen
JButton neu = new JButton("Neuer Eintrag");
JButton loeschen = new JButton("Letzten Eintrag löschen");
JButton statistiken = new JButton("Statistik für Tankung: ");
JButton statistikenGesamt = new JButton("Gesamtstatistik");
JLabel platzHalter1 = new JLabel("");
JLabel platzHalter2 = new JLabel("");
JLabel platzHalter3 = new JLabel("");
JLabel platzHalter4 = new JLabel("");
//ActionListeners
final int anzahl = a1.getAnzahl();
final Auto a2 = a1;
statistiken.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int tankungNr = anzahl-Jtabelle.getSelectedRow();
if(tankungNr == 0){
JOptionPane.showMessageDialog(null, "Basisdatensatz, kann nicht genutzt werden !", "Fehler", JOptionPane.INFORMATION_MESSAGE);
}else if(Jtabelle.getSelectedRow() != -1){
System.out.println(tankungNr);
Statistik stats = new Statistik(a2, tankungNr);
stats.setVisible(true);
}else{
JOptionPane.showMessageDialog(null, "Bitte eine Tankung anwählen !", "Fehler", JOptionPane.INFORMATION_MESSAGE);
}
}});
statistikenGesamt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
StatistikGesamt gesamt = new StatistikGesamt(a2);
gesamt.setVisible(true);
}});
loeschen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
loescheTankung();
repaint();
}});
funktionen.add(neu);
funktionen.add(platzHalter1);
funktionen.add(loeschen);
funktionen.add(platzHalter2);
funktionen.add(statistiken);
funktionen.add(platzHalter3);
funktionen.add(statistikenGesamt);
funktionen.add(platzHalter4);
//JPanels anzeigen lassen
add(kennzeichenAnzeige, BorderLayout.NORTH);
add(options, BorderLayout.SOUTH);
add(tabelle, BorderLayout.EAST);
add(funktionen, BorderLayout.WEST);
super.pack();
}
private void loescheTankung(){
a1.loescheTankung();
}