Auf Thema antworten

Deklarier deine cNames mal als Klassenvariable und füge mal [code=Java]  

                     dtm = new DefaultTableModel(data, cNames);

                     liste.setModel(dtm);[/code] vor deiner auskommentierten for-schleife ein.


Das deine Klasse so aussieht:


[code=Java]import javax.swing.*;

import java.awt.*;

import java.awt.event.*; //Event brauchen wir für das Ereigniss, wenn ein Button geklickt wird

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.JScrollPane;

import javax.swing.table.DefaultTableModel;


import java.awt.GridLayout;

import java.util.ArrayList;


/*

 * import javax.swing.JScrollPane;

 * import java.awt.Dimension;

 * import java.awt.event.MouseAdapter;

 * import java.awt.event.MouseEvent;

 */


public class Datenbank extends JFrame

{

    /**

     *

     */

    private static final long serialVersionUID = 1L;

    public JButton button1;

    public JButton button2;

    public JButton button3;

    public JButton button4;

    public JPanel panelButton, panelLabel, panelRadio;

    public JLabel oben;

    public JTable liste;

    public JScrollPane spane;

    public ArrayList<Flugzeug> array;

    public String[][] data;

    DefaultTableModel dtm;

    public String[]cNames;


     public Datenbank()

     {

         super("Kontrollterminal");

        

         // Arraylist instanzieren

         array = new ArrayList<Flugzeug>();

         //Fenster erzeugen

         setLocation(300,300);

         setSize (600,200);

         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         setLayout(new BorderLayout(5,5));


         //Panels erzeugen

         panelButton = new JPanel(new GridLayout(4,1));   

         panelRadio = new JPanel(new GridLayout(2,1));

        

         //Buttons erzeugen

         button1 = new JButton("Neuer Flug hinzufügen");

         button2 = new JButton("Flug löschen");

         button3 = new JButton("Flug bearbeiten");

         button4 = new JButton("Liste ausdrucken");


       

         //Auf Panel Buttons packen

         panelButton.add(button1);

         panelButton.add(button2);

         panelButton.add(button3);

         panelButton.add(button4);


        

         //Listener für Buttons

         addButtonListener(button1);

         addButtonListener(button2);

         addButtonListener(button3);

         addButtonListener(button4);


         //Labels erzeugen

         oben = new JLabel("Flüge verwalten");

      

         //Label zentrieren

         oben.setHorizontalAlignment(JLabel.CENTER);

        

         //Label dem Panel hinzufügen

        

       

        cNames = new String[]{"Flugnummer","Startzeit","Startbahn","Ankunft"};

        dtm = new DefaultTableModel(data, cNames);

        liste = new JTable(dtm);

        spane = new JScrollPane(liste);

       

        

         //Panels auf Frame packen

         add(BorderLayout.WEST, panelButton);

         add(BorderLayout.NORTH, oben);

         add(BorderLayout.CENTER, spane);

        

         // Das Fenster wird Sichtbar gemacht

         setVisible(true);

    }


     public static void main(String[] args)

     {

         new Datenbank();

     }


     private void addButtonListener(JButton b)

     {

         b.addActionListener(new ActionListener()

         {

             public void actionPerformed(ActionEvent e)

             {

                 if(e.getSource() == button1)

                 {

                     try

                     {

                             Object[] auswahl = {"Passagierflugzeug", "Frachtflugzeug"};

                            

                             String h = (String) JOptionPane.showInputDialog(null, "Wählen Sie einen Flugzeugtyp:", "Frage",JOptionPane.QUESTION_MESSAGE,null,auswahl,"Passagierflugzeug");

                             String a = JOptionPane.showInputDialog(null, "Geben sie die Flugnummer ein: ", "Eingabeterminal", 3);

                             String d = JOptionPane.showInputDialog(null, "Geben sie die Anzahl der Flugbegleiter ein: ", "Eingabeterminal", 3);

                            

                             if(h.equals("Passagierflugzeug"))

                             {            

                                

                                String b = JOptionPane.showInputDialog(null, "Geben sie die Anzahl der Passagiere ein: ", "Eingabeterminal", 3);

                                String c = JOptionPane.showInputDialog(null, "Geben sie die Anzahl der Gesamtplätze ein: ", "Eingabeterminal", 3);

                               

                                                          

                                int w = Integer.parseInt(a);

                                int x = Integer.parseInt(b);

                                int y = Integer.parseInt(c);

                                int z = Integer.parseInt(d);

                               

                               

                               

                               

                               

                                Passagierflugzeug pf = new Passagierflugzeug(w, x, y, z );

                                array.add(pf);

                             }

                             else

                             {

                                  String b = JOptionPane.showInputDialog(null, "Geben sie die Ladung ein: ", "Eingabeterminal", 3);

                                 String c = JOptionPane.showInputDialog(null, "Geben sie das Gewicht ein: ", "Eingabeterminal", 3);

                                   

                                                              

                                 int w = Integer.parseInt(a);

                                 int y = Integer.parseInt(c);

                                 int z = Integer.parseInt(d);

                                   

                                 Frachtflugzeug ff = new Frachtflugzeug(b, y, w,z);

                                 array.add(ff);

                             }

                        

                            

                           

                           

                           

                      }

                      catch (NumberFormatException g)

                      {

                            System.out.println("Fehler!");

                      }

                     data = new String[array.size()][4];

                     /*

                     System.out.println("Arraygröße: "+ array.size());

                     System.out.println(array.toString());

                     */

                     for(int i =0; i<array.size(); i++)

                     {

                         if(array.get(i) instanceof Passagierflugzeug)

                         {

                            /*

                             *  System.out.println(i);

                             *  System.out.println("Array:"+ array.get(i));

                             */

                             Passagierflugzeug pf = (Passagierflugzeug) array.get(i);

                             data[i][0]= Integer.toString(pf.getGesamtPlaetze());

                             data[i][1]= Integer.toString(pf.getPassagierAnzahl());

                             data[i][2]= Integer.toString(pf.getBesatzungsAnzahl());

                             data[i][3]= Integer.toString(pf.getFlugnummer());

                           

                         }

                         else

                         {

                             Frachtflugzeug ff = (Frachtflugzeug) array.get(i);

                             data[i][0]= Integer.toString(ff.getLadegewicht());

                             data[i][1]= ff.getFracht();

                             data[i][2]= Integer.toString(ff.getBesatzungsAnzahl());

                             data[i][3]= Integer.toString(ff.getFlugnummer());

                         }

                     }

                    

                     dtm = new DefaultTableModel(data, cNames);

                     liste.setModel(dtm);

                    

                   

                     /*

                     for(int i=0; i<array.size(); i++)

                     {

                         for (int k= 0 ;k<4; k++)

                         {

                             System.out.println(data[i][k]);

                         }

                         System.out.println("");

                     }

                     dtm.fireTableDataChanged();

                    

                    

                     liste.repaint();

                     liste.revalidate();

                     repaint();

                     revalidate();

                     */

                }

                if(e.getSource() == button2)

                {

                    System.out.println("Button2");

                }

                

                if(e.getSource() == button3)

                {

                    System.out.println("Button3");

                }

                

                if(e.getSource() == button4)

                {

                    System.out.println("Button4");

                }

              }

         });

        

     }


  /*   private void eingabe(String a)

     {

         anzeige.setText(a);

     } 

  */ 

 }[/code]


der Code ist jedoch alles andere als übersichtlich und gut strukturiert. Würde lieber einige Dinge in kleineren Methoden auslagern. Hatte jetzt nicht die Zeit den kompletten Source durchzuschauen, funktionieren tuts zumindest jetzt.



Oben