# Innerhalb der GUI Klasse meine neue Klasse aufrufen



## runT (7. Aug 2007)

Hi Zusammen,

Ich komm irgendwie bei meinem Programm nicht weiter. Ich möchte dass bei einer Action-Command (ein Klick auf das menu-Item), ein neues Fenster aufgerufen wird. Dieses neue Fenster JFrame ("DDS-Analyse") habe ich in einer neuen Klasse Analyse.java konstruiert. Könnt Ihr mal reinschauen, weshalb das Fenster nicht geöffnet wird. Es scheint so, dass was getan wird.. aber sofort wieder verschwindet. 

Ich hab mal es anders versucht, dass ich mein Aufruf gleich am Anfang meiner Gui-Klasse programmiert habe... klar ist, dass beim Programmstart dann alle Fenster gleichzeitig öffnet incl die neue Klasse..  das möchte ich aber nicht. So sieht die aus:

Gui Klasse:


```
/*
 * DamoclesXPGui.java
 *
 * Created on 29. April 2007, 21:11
 *
 * Die Main - Klasse startet das GUI auf, welche wiederum 
 * die anderen Klassen ansteuert.
 * Die folgenden Programmierzeilen stellen das GUI dar, welche
 * für die Fotsetzung der Damocles XP Programmierung ein wichtiger
 * Grundstein ist. Bevor die Applikation vom User benutzt werden kann, wird 
 * ein Anmeldefenster erscheinen, um das Programm zu benutzen. 
 * 
 * Author: R. Badalamenti, Student ABBTS
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ch.sbb.P_OP_RFT.DamoXP;

/**
 *
 * @author rbadalam
 */
import java.awt.*;  //Layout-Manager
import java.awt.event.*; //Ereignisbehandlung
import javax.swing.*; //Swing-Komponenten
import javax.swing.event.*; //Listener-Interfaces, Adapterklassen
import java.io.*;
import ch.sbb.P_OP_RFT.DamoXP.Analyse;


public class DamoclesXPGui extends JFrame implements ActionListener {
    
//Konstruktor erzeugen
  DamoXPSetDlg damoxpsetdlg;
      { java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DamoXPLogin(new javax.swing.JFrame(),"Anmeldung",true).setVisible(true);
            }
        });
    }
  //DamoXPLogin damoxplogin = new DamoXPLogin();
 
  Analyse analyse = new Analyse();
 

public DamoclesXPGui (String titel) {
    super (titel);

//Look and Feel implementieren resp erzwingen
try {
    UIManager.setLookAndFeel(
            "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    }
catch(Exception ex) {
    System.err.println("Ein Fehler ist bei Look and Feel aufgetaucht\n");
}    

//Haupt-Panel erstellen
JPanel m_mainPanel = new JPanel ();
m_mainPanel.setLayout (new BorderLayout () );


//Menü im Norden anfügen
m_mainPanel.add(createMenuBar(), BorderLayout.NORTH);
 
 //Menü im Süden anfügen
 m_mainPanel.add(createStatus(), BorderLayout.SOUTH);
 
//Haupt-Panel in Frame aufnehmen
getContentPane().add(m_mainPanel);

//Fenster in der Mitte des Bildschirmes einrichten
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x, y;
x = (screenSize.width / 2) - (getSize().width / 2);
y = (screenSize.height / 2) - (getSize().height / 2);
setLocation(x,y);
setVisible(true);
addWindowListener(new MyWindowListener());
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
 
}

private JMenuBar createMenuBar(){
    
//Menueleiste erstellen
JMenuBar m_menubar = new JMenuBar();

//Menu Daten-Transfer
JMenu m_datentransferMenu = new JMenu ("Datentransfer");
JMenuItem m_downloadddsMenuItem = new JMenuItem ("Download DDS");
JMenuItem m_datasyncMenuItem = new JMenuItem ("Synchronisieren");
JMenuItem m_exitMenuItem = new JMenuItem ("Programm beeenden");
m_downloadddsMenuItem.addActionListener(this);
m_datentransferMenu.add(m_downloadddsMenuItem);
m_datasyncMenuItem.addActionListener(this);
m_datentransferMenu.add(m_datasyncMenuItem);
m_exitMenuItem.addActionListener(this);
m_datentransferMenu.add(m_exitMenuItem);


//Menu Datenbank
JMenu m_datenbankMenu = new JMenu("Datenbank");
JMenuItem m_loksauflistenMenuItem = new JMenuItem("Loks auflisten");
JMenuItem m_loksloeschenMenuItem = new JMenuItem("Loks löschen");
JMenuItem m_ddsloeschenMenuItem = new JMenuItem("DDS löschen");
JMenuItem m_deloeschenMenuItem = new JMenuItem("DE löschen");
JMenuItem m_dateigroesseMenuItem = new JMenuItem ("Datei Grösse");
JMenuItem m_ddsoeffnenMenuItem = new JMenuItem ("DDS Datenbank öffnen");
m_loksauflistenMenuItem.addActionListener(this);
m_datenbankMenu.add(m_loksauflistenMenuItem);
m_loksloeschenMenuItem.addActionListener(this);
m_datenbankMenu.add(m_loksloeschenMenuItem);
m_ddsloeschenMenuItem.addActionListener(this);
m_datenbankMenu.add(m_ddsloeschenMenuItem);
m_deloeschenMenuItem.addActionListener(this);
m_datenbankMenu.add(m_deloeschenMenuItem);
m_dateigroesseMenuItem.addActionListener(this);
m_datenbankMenu.add(m_dateigroesseMenuItem);
m_ddsoeffnenMenuItem.addActionListener(this);
m_datenbankMenu.add(m_ddsoeffnenMenuItem);


//Menu NFS erstellen
JMenu m_NFSMenu = new JMenu("NFS");
JMenuItem m_NFSinitMenuItem = new JMenuItem("NFS initialisieren");
JMenuItem m_LokNrMenuItem = new JMenuItem("Lok-Nr editieren");
m_NFSinitMenuItem.addActionListener(this);
m_LokNrMenuItem.addActionListener (this);
m_NFSMenu.add(m_NFSinitMenuItem);
m_NFSMenu.add(m_LokNrMenuItem);

//Menü Konfiguration kreieren
JMenu m_ConfigMenu = new JMenu ("Konfiguration");
JMenuItem m_ConfigSetupMenuItem = new JMenuItem ("Einstellungen");
m_ConfigSetupMenuItem.addActionListener (this);
m_ConfigMenu.add (m_ConfigSetupMenuItem);

//Hilfe-Menu kreieren
JMenu m_hilfeMenu = new JMenu ("Hilfe");
JMenuItem m_infoMenuItem = new JMenuItem ("Info");
m_hilfeMenu.add(m_infoMenuItem);
m_infoMenuItem.addActionListener (this);

//Menubar kreieren
m_menubar.add(m_datentransferMenu);
m_menubar.add(m_datenbankMenu);
m_menubar.add(m_NFSMenu);
m_menubar.add(m_ConfigMenu);
m_menubar.add(m_hilfeMenu);
//setJMenuBar(m_menubar);

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


return m_menubar;

}

private JPanel createStatus(){
//Statusleiste erstellen
JPanel m_statusPanel = new JPanel ();
m_statusPanel.setLayout (new FlowLayout () );



//Text-Label erstellen in der Statusleiste
JLabel m_labelStatus = new JLabel ("Status: ");
JTextField m_textFieldStatus = new JTextField ("Online");
m_textFieldStatus.setColumns (40);
m_textFieldStatus.setEditable (false);

m_statusPanel.add (m_labelStatus);
m_statusPanel.add(m_textFieldStatus);

return m_statusPanel;

}


public class DamoXPLogin extends javax.swing.JDialog {
    /** A return status code - returned if Cancel button has been pressed */
    public static final int RET_CANCEL = 0;
    /** A return status code - returned if OK button has been pressed */
    public static final int RET_OK = 1;
    
    /** Neues Dialogfenster wird erstellt */
    public DamoXPLogin(java.awt.Frame parent, String fenstertitel, boolean modal) {
        super(parent,fenstertitel, modal);
        initComponents();
        
        
    }
    
    /** Rückgabewert - Status des Dialogfenster für OK und Cancel Button
    public int getReturnStatus() {
        return returnStatus;
    }
    
    /** Diese Methode wird innerhalb des Konstruktors aufgerufen um
     *  die Dialog-Fensteroberfläche instanzieren.
     */
    // Konstruktor, das Dialogfenster wird erzeugt
    private void initComponents() {
        okButton = new javax.swing.JButton();
        cancelButton = new javax.swing.JButton();
        name = new javax.swing.JLabel();
        vorname = new javax.swing.JLabel();
        unummer = new javax.swing.JLabel();
        eingabeName = new javax.swing.JTextField();
        eingabeVorname = new javax.swing.JTextField();
        eingabeUNr = new javax.swing.JTextField();
        InfoMessage = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();

        //Registrierung der Event-Lauscher der Fenster
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });
        //Hier Action-Handler für die Buttons
        okButton.setText("OK");
        okButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                okButtonActionPerformed(evt);
            }
        });

        cancelButton.setText("Cancel");
        cancelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelButtonActionPerformed(evt);
            }
        });

        name.setText("Name:");

        vorname.setText("Vorname:");

        unummer.setText("U-Nummer:");

     /**   eingabeName.addInputMethodListener(new java.awt.event.InputMethodListener() {
            public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {
            }
            public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {
                eingabeNameInputMethodTextChanged(evt);
            }
        });

      */
        InfoMessage.setText("Bitte geben Sie Ihren Namen, Vornamen und Ihre U-Nummer ein.");

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap(421, Short.MAX_VALUE)
                        .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(96, 96, 96)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(InfoMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 392, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                            .addComponent(unummer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                                .addComponent(vorname, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(name, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addGap(42, 42, 42)))
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(eingabeName, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
                                    .addComponent(eingabeVorname, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
                                    .addComponent(eingabeUNr, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE))))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cancelButton)
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, okButton});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(InfoMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(32, 32, 32)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(eingabeName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(16, 16, 16)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(vorname, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(eingabeVorname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(26, 26, 26)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(unummer, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(eingabeUNr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 65, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cancelButton)
                    .addComponent(okButton))
                .addContainerGap())
        );
        pack();
    }// </editor-fold>

    private void eingabeNameInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {                                                   
// 
    }                                                  
    
    //Wie im Email bekanntgegeben, wäre ich froh, wenn du mir ein Tipp geben könntest, wie ich die
    //Felder überprüfen kann, dass beide ausgefüllt sind... hab mal hier nachfolgend begonnen... merci für dini Hilf!
  /**  public boolean fieldsFilled(){
        //Überprüfung ob die Felder ausgefüllt sind
        if((eingabeName.getText().equals("")
            && (eingabeVorname.getText().equals("")
            && (eingabeUNr.getText().equals("")
            )
            return false;
        else return true;
    }
   */
    
    public void okButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if((eingabeName.getText().equals("")) || (eingabeVorname.getText().equals("")) || (eingabeUNr.getText().equals("")))
    {
       //
                    JOptionPane.showMessageDialog(this,"Achtung: Sie müssen alle Felder ausfüllen!","Eingabefehler",JOptionPane.WARNING_MESSAGE);
            { java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DamoXPLogin(new javax.swing.JFrame(),"Anmeldung",true).setVisible(true);
            }
        });
    }
    
   // return;
    
}
    
    else if (okButton.equals("OK"))
        {
             ausgabeName = eingabeName.getText();
             ausgabeVorname = eingabeVorname.getText();
             ausgabeUNr = eingabeUNr.getText();
        }
     //return;
    doClose(RET_OK);
    }                                        
    
    public void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    // doClose(RET_CANCEL);
           
      String cmd = evt.getActionCommand();
        if (cmd.equals("Cancel")) {
                setVisible(false);
                dispose();
                System.exit(0);
            }
        }
       
                                                
    
    /** Hiermit wird das Dialog-Fenster "Anmeldung" zu Beginn der Applikation geschlossen */
    private void closeDialog(java.awt.event.WindowEvent evt) {                             
        doClose(RET_CANCEL);
    }                            
    
    private void doClose(int retStatus) {
        returnStatus = retStatus;
        setVisible(false);
        dispose();
    }
    
    /**
     * @param args the command line arguments
     */
    
    
   // public static void main(String args[]) {

    
    
    // Variablen - Deklaration für das Anmelde-Fenster ganz am Anfang
    private javax.swing.JLabel InfoMessage;
    private javax.swing.JButton cancelButton;
    private javax.swing.JTextField eingabeName;
    private javax.swing.JTextField eingabeUNr;
    private javax.swing.JTextField eingabeVorname;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JLabel name;
    private javax.swing.JButton okButton;
    private javax.swing.JLabel unummer;
    private javax.swing.JLabel vorname;
    // End of variables declaration
    
    private String ausgabeName;
    private String ausgabeVorname;
    private String ausgabeUNr;
    
    private int returnStatus = RET_CANCEL;
}




public void actionPerformed (ActionEvent e) {
    String cmd = e.getActionCommand();
    if (cmd.equals ("DDS Datenbank öffnen")){   //Hier wird die DDS Datenbank geöffnet und in einer Tabellenform angezeigt
    
    new Analyse();
    
}
        /*
    {Analyse analyse = new Analyse();
        analyse.setVisible(true);
        analyse.Analyse();
    }
         */
    else if (cmd.equals ("Programm beenden"))  // Hier wird die Applikation beendet
        setVisible(false);
        System.exit(0);
    
    }
         
        
//  try {
   //   damoxpsetdlg = new DamoXPSetDlg();
 // }
    
    /**
      catch (Exception ex) {
          System.out.println("Es trat ein Fehler auf");
          System.out.println(ex);
      } 
    */    
//}


//private DamoXPSetDlg m_damoxpconfig;

        
/* class CMyActionListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {

    String command = e.getActionCommand();
    if(command.equalsIgnoreCase("Einstellungen")) {
    
 try {
    configProperties.load(new FileInputStream("C:/Documents and Settings/rbadalam/My Documents/ABB TS/Projektstudium2/Netbeans/SBB Projekt/Damocles XP/DamoclesXP/build/System Property/Config.properties"));
    
}
catch (java.io.IOException e) {
    System.out.println(e);
}; //catch Befehl
try {
    UIManager.setLookAndFeel(
            configProperties.getProperty("LookAndFeel"));
}
catch(Exception e) {
    e.printStackTrace();
}

    }    
}
    
}
*/
//Hiermit kann man das Fenster der Applikation schliessen resp. Programm beenden
class MyWindowListener extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
 
}
}
```

Und hier noch meine neue Klasse Analyse:

```
/*
 * Analyse.java
 *
 * Created on 18. Juli 2007, 15:06
 *
 * Die Analyse- Klasse wird die DDS-Daten, welche vom Miklas(-Diagnoserechner) bereitgestellt werden,
 * in einer detaillierten Tabellendarstellung strukturiert. Es geht hier um die folgenden Information der
 * Lok-Störung: Datum und Uhrzeit, wann die Störung erfolgt ist; welches Fahrzeugleitgerät (FLG) und 
 * zusätzlich die Störmeldung. Zusätzlich in der unteren Bildschirmhälfte sind auch zwei Fenster eingeblendet.
 * Auf der linken unteren Fensterhälfte sind die Informationen und auf der rechten Seite sind Umfelddaten, der
 * jeweils ausgewählten Daten-Zeile in der oberen Tabelle.
 */

package ch.sbb.P_OP_RFT.DamoXP;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTable; 

import javax.swing.table.DefaultTableModel; 

import java.text.Collator;
import java.util.Comparator;


/**
 *
 * @author rbadalam
 */
public class Analyse extends JFrame {
    private JTable table;
    

    
    /** Creates a new instance of Analyse */
    public Analyse() {
        super("Daten-Analyse DDS");
         read();
         dataLoad();
         setVisible(true);
         
        
 
      
         
      
  
    
 
       
      
//     String[] colTitle;
//     colTitle = {"Datum/Uhrzeit", "FLG", "Störungstext"};
        
    }
    
    /** This method is called from within the constructor to
     * initialize the form.

     */
//Komponenten innerhalb des JFrame erzeugen und Tabelle vorbereiten
    public void dataLoad() {
        jSeparator1 = new javax.swing.JSeparator();
        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu2 = new javax.swing.JMenu();
        jMenuBar3 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jScrollPane1 = new javax.swing.JScrollPane();
        AnalyseDatenTable = new javax.swing.JTable();
        AnalyseInformation = new javax.swing.JLabel();
        AnalyseUmfeldDaten = new javax.swing.JLabel();
        AnalyseLokNr = new javax.swing.JLabel();
        jScrollPane4 = new javax.swing.JScrollPane();
        InputSearch = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        jScrollPane5 = new javax.swing.JScrollPane();
        AnalyseDatenInformation = new javax.swing.JTextArea();
        jScrollPane7 = new javax.swing.JScrollPane();
        AnalyseDatenUmfeldDaten = new javax.swing.JTextArea();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu3 = new javax.swing.JMenu();
        load = new javax.swing.JMenuItem();
        jMenu4 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();

        jMenu2.setText("Menu");
        jMenuBar2.add(jMenu2);

        jMenu1.setText("Menu");
        jMenuBar3.add(jMenu1);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
        });
        
        String columnNames[] = {"Datum/Uhrzeit", "FLG", "Störungsmeldung"};
        Object rowData[][] = (Object[][])input.toArray( new Object[ input.size() ][] );
        AnalyseDatenTable.setModel(new StringTableModel(rowData, columnNames));
        
        //Arrays.sort(rowData,1,890,new NameCoperator());

         
         
            
              /*
                 new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null}
            }, 
               */
             
             /*
            new String [] {
                "Datum/Uhrzeit", "FLG", "Störungsmeldung"
              }
        ));
              */
        jScrollPane1.setViewportView(AnalyseDatenTable);

        AnalyseInformation.setText("Information");

        AnalyseUmfeldDaten.setText("Umfelddaten");

        AnalyseLokNr.setText("Suche nach:");

        jScrollPane4.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane4.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        jScrollPane4.setHorizontalScrollBar(null);
        jScrollPane4.setWheelScrollingEnabled(false);
        InputSearch.setColumns(20);
        InputSearch.setRows(5);
        jScrollPane4.setViewportView(InputSearch);

        AnalyseDatenInformation.setColumns(20);
        AnalyseDatenInformation.setEditable(false);
        AnalyseDatenInformation.setRows(5);
        AnalyseDatenInformation.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                AnalyseDatenInformationFocusGained(evt);
            }
        });

        jScrollPane5.setViewportView(AnalyseDatenInformation);

        jScrollPane2.setViewportView(jScrollPane5);

        AnalyseDatenUmfeldDaten.setColumns(20);
        AnalyseDatenUmfeldDaten.setEditable(false);
        AnalyseDatenUmfeldDaten.setRows(5);
        jScrollPane7.setViewportView(AnalyseDatenUmfeldDaten);

        jMenu3.setText("Datei");
        load.setText("Datei öffnen");
        jMenu3.add(load);

        jMenuBar1.add(jMenu3);

        jMenu4.setText("Filtern");
        jMenuItem2.setText("Sortieren");
        jMenu4.add(jMenuItem2);

        jMenuBar1.add(jMenu4);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(AnalyseInformation)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 248, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(AnalyseUmfeldDaten)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 214, Short.MAX_VALUE))
                            .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(AnalyseLokNr)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE)
                        .addGap(348, 348, 348))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 529, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(44, 44, 44)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jScrollPane4, 0, 14, Short.MAX_VALUE)
                    .addComponent(AnalyseLokNr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE)
                .addGap(8, 8, 8)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(AnalyseInformation, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(AnalyseUmfeldDaten, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE)
                    .addComponent(jScrollPane2))
                .addContainerGap())
        );
        pack();
    }// </editor-fold>                        

    private void AnalyseDatenInformationFocusGained(java.awt.event.FocusEvent evt) {                                                    
// TODO add your handling code here:
    }                                                   

    private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
// TODO add your handling code here:
    }                                    
    


    
    // Variables declaration - do not modify                     
    private javax.swing.JTextArea AnalyseDatenInformation;
    private javax.swing.JTable AnalyseDatenTable;
    private javax.swing.JTextArea AnalyseDatenUmfeldDaten;
    private javax.swing.JLabel AnalyseInformation;
    private javax.swing.JLabel AnalyseLokNr;
    private javax.swing.JLabel AnalyseUmfeldDaten;
    private javax.swing.JTextArea InputSearch;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JMenuBar jMenuBar3;
    private javax.swing.JMenuItem load;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JSeparator jSeparator1;
    Vector input;   //die ist die Variable für den Vektor
    // End of variables declaration    
    
       
 public void read(){
    
      try {
         BufferedReader eingabe = new BufferedReader(new FileReader("C:\\beispiel.txt"));
         int gelesen;
         String eingabezeile;

         eingabezeile=eingabe.readLine();

         input = new Vector(); // #### in diesem Vector speichern

         while( eingabezeile != null )
         {
            StringTokenizer token= new StringTokenizer (eingabezeile);

            String[] felder =eingabezeile.split(",");
           /*
            Vector row = new Vector();
            for (int i=0;i<felder.length;i++){
                row.addElement(felder[i]);
            }
            */

            StringBuffer text =new StringBuffer(10);
            input.add( felder );
            eingabezeile=eingabe.readLine();
         }
         
 /*    
         Object rowData[][] = (Object[][])input.toArray( new Object[ input.size() ][] );
         Arrays.sort(rowData,1,890,new NameCoperator());

         
         String columnNames[] = {"Datum/Uhrzeit", "FLG", "Störungsmeldung"};

         table.setModel( new StringTableModel( rowData, columnNames ));
                 

     */         
      }
      catch( IOException ex ){
         ex.printStackTrace();
      }
     
    
  }
 /*
 private void search(){
  String text = AnalyseDatenTable.();
  String search = InputSearch.getText();
  String[] felder = eingabezeile.split(",");
 }
  */

    
/*
 public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Analyse().setVisible(true);
            }
        });
    }
 */
 
   
   
   
}
```

und für die Analyse Klasse brauchts noch die StringTableModel hier:


```
*
 * StringTableModel.java
 *
 * Created on 31. Juli 2007, 10:31
 *
 * Dies ist die Tabellenform für die Daten-Ansicht der DDS. Diese Klasse wird innerhalb der Analyse-Klasse
 * verwendet, um die Daten aus dem csv-File in die Tabelle zu importieren.
 */

package ch.sbb.P_OP_RFT.DamoXP;

import javax.swing.table.DefaultTableModel;
/**
 *
 * @author rbadalam
 */
public class StringTableModel extends DefaultTableModel {
    
    /** Creates a new instance of StringTableModel */
    public StringTableModel(Object[][] data, String[] names) {
             super( data, names );
      }

      // Eine Angabe, welchen Typ von Objekten in den Columns angezeigt werden soll
      public Class getColumnClass(int columnIndex) {
         return String.class;
      }

      // Jede Zelle ist nicht editierbar
      public boolean isCellEditable(int rowIndex, int columnIndex) {
         return false;
      } 
    }
```

Besten Dank für Eure Tipps und Hinweise zu meinem Code.

Gruss aus der Schweiz,

Rob


----------



## Marco13 (7. Aug 2007)

Poste nur den relevanten Teil. Am besten ein compilierbares Beispiel. Oder sag, wo die problematische Stelle liegt. Diesen GUI-Builder-Quäl-Kot WILL ich mir ehrlich gesagt garnicht ansehen.

```
import javax.swing.*;
import java.awt.event.*;

class Analyse extends JFrame
{
    public Analyse()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(100,100);
        getContentPane().add(new JLabel("Hello"));
    }
}


class MenuTest extends JFrame
{
    public static void main(String args[])
    {
        new MenuTest();
    }

    public MenuTest()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(100,100);
        JMenu menu = new JMenu("Menu");
        JMenuItem menuItem = new JMenuItem("Item");
        menuItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                Analyse analyse = new Analyse();
                analyse.setVisible(true);
            }
        });
        menu.add(menuItem);
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        menuBar.add(menu);
        setVisible(true);
    }
}
```


----------

