Txt, später dann csv File in JTable einlesen(Idee Vector)

runT

Mitglied
Hi Jungs,

Ich bin an einer JTable dran, die ich programmieren muss. Die JTable muss mit Informationen gefüttert werden, die in einem Txt-File., (später kommen dann auch csv. File) enthalten sind. Die Informationen sind zeilenweise und in 3 Spalten (Titel im File nicht vorhanden, deshalb werden sie im Code mitgegeben) geordnet! Meine Idee ist mit Vector() und hab diese auch so programmiert, ich erlaube mir meinen Code mal in diesem Forum zu posten und hoffe, dass ein Java-Erfahrener Programmierer mir hier behilflich ist! Das wäre total cool... :rolleyes:

Hier mal mein Code:
Code:
*
 * Analyse.java
 *
 * Created on 18. Juli 2007, 15:06
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package ch.sbb.P_OP_RM_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");
         dataLoad();
         read();
         
        
 
      
         
      
  
    
 
       
      
//     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();
        ShowLokNr = 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"};   //Hier die Spaltentitel
        Object rowData[][] = (Object[][])input.toArray( new Object[ input.size() ][] );
        AnalyseDatenTable.setModel(new DefaultTableModel(rowData, columnNames));
        // Arrays.sort(rowData,1,890,new NameCoperator()); // diese Line wird momentan nicht gebraucht, brauche ich evtl. später um die Sortier/Filter-Methode zu programmieren

         
         
            
              /*
                 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("Lok - Nr:");

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

        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("Laden");
        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 ShowLokNr;
    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("beispiel.txt")); //das TXT-file ist momentan als Beispiel innerhalb des Projektordners abgelegt!
         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("\\|");

            StringBuffer text =new StringBuffer(10);
            input.add( felder );
            eingabezeile=eingabe.readLine();
         }
         
   
      }
      catch( IOException ex ){
         ex.printStackTrace();
      }
     
    
  }

    

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

Fehler: er kommt mit Exception-Fehler... welcher beim Vector ausgerufen wird (!)

Again.. besten Dank für Euren Support! Super-Forum hier.. echt!

Grüess aus der Schweiz,

Rob

An Moderatoren: Sorry, hab mein Post im falschen Themengebiet geschrieben.. wäre es möglich mein Post in die Swing - Kategorie zu moven? Besten Dank.... entschuldigung..
 
Zuletzt bearbeitet:
Du musst dem Vector vor diesem Aufruf schon was zuweisen oder ihn init.
Ansonsten verweist er ins nirvana und dann passiert so was:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 
Hallo,

wie er schon sagte, ist der Vector nicht initialisiert. Du hast die Aufrufe von read() und dataLoad() im Constructor vertauscht. dataRead() benutzt den Vector schon, bevor er in read() erstellt wird.
Außerdem musst du dem FileReader einen Pfad übergeben, ich schätze sonst wird er die Datei nicht finden.
 
Ausserdem hat dein Vektor dann nur immer die Daten einer Zeile.

Du brauchst einen Vektor aus Vektoren.

Musst also die Daten adden in ein Vektor (z.B: einen Vektor "row" mit: row.add(das was du adden willst)) und dann diesen Vektor dem Vektor "input" zugeben (input.add(row)).

Nicht vergessen, wenn du einen Vektor nimmst, und einen Vektor "row" daraus ansehen willst, musst das ELement auch wieder auf Vektor casten, sonst gibt es z.B. nur einen STring durch Komma getrennt.

Vector anschauenEinerZeile = (Vector) input.elementAt(idx);

Arrays haben den Vorteil, dass du mit dem Index direkt auf "Zeilen" und "Spalten" zugreifen kannst.
 
Ausserdem hat dein Vektor dann nur immer die Daten einer Zeile.

Du brauchst einen Vektor aus Vektoren.

Musst also die Daten adden in ein Vektor (z.B: einen Vektor "row" mit: row.add(das was du adden willst)) und dann diesen Vektor dem Vektor "input" zugeben (input.add(row)).

Nicht vergessen, wenn du einen Vektor nimmst, und einen Vektor "row" daraus ansehen willst, musst das ELement auch wieder auf Vektor casten, sonst gibt es z.B. nur einen STring durch Komma getrennt.

Vector anschauenEinerZeile = (Vector) input.elementAt(idx);

Arrays haben den Vorteil, dass du mit dem Index direkt auf "Zeilen" und "Spalten" zugreifen kannst.

Hallöchen

Zu erst einmal besten Dank an alle... es hat geklappt das Fenster wird gestartet.. und eben jetzt kommts... wie schon CHklein gesagt hat.. wird jetzt alles in einer Spalte angezeigt..dh die anderen Felder werden nicht gefüllt wie sie müssen. Aber irgendwie hab ich mir Gedanken gemacht wie das eigentlich aussehen sollte mit der korrekten Daten-Füllung .. und mit dem row.add zu programmieren... leider komme ich da nicht weiter.... By the way, hab noch das Beispiel File auch noch angehängt.. um die Situation besser zu erklären, dann könnt Ihr's sonst mal bei Euch testen.

Hier meine Codes :

die JFrame:

Code:
/*
 * 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_RM_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();
         
        
 
      
         
      
  
    
 
       
      
//     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();
        ShowLokNr = 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);
        ShowLokNr.setColumns(20);
        ShowLokNr.setRows(5);
        jScrollPane4.setViewportView(ShowLokNr);

        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 ShowLokNr;
    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("\\|");

            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();
      }
     
    
  }

    

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

und meine neue Tabellenform(StringTableModel):

Code:
*
 * 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_RM_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;
      } 
    }

Wie gesagt, es geht nur noch um die korrekte Datenfüllung resp. Ansicht in der Tabelle...

Könnt Ihr mir da in diese Richtung weiterhelfen.

Tausend Dank an Alle!

Grüessli aus der schweiz,

Rob
 

Anhänge

  • beispiel.txt
    6,5 KB · Aufrufe: 61
Hallo,

du lässt die Zeilen in der read()-Methode mit split("\\|") teilen, aber das Trennzeichen gibt es in der Datei gar nicht. Du musst also die Spalten in der Textdatei auch trennen, damit das erkannt wird.
Mit dem Vector pro Zeile geht das dann so:
Code:
input = new Vector();
while( eingabezeile != null )
{
    String[] felder =eingabezeile.split("\\|");
    Vector row = new Vector();
    for(int i=0;i<felder.length;i++)
    {
        row.addElement(felder[i]);
    }
    input.add(row);
    eingabezeile=eingabe.readLine();
}
 
Hey cool... ;-)

es funktioniert! Voll Geil, macht echt Spass. Ich werde immer mehr dazu lernen... gibt's da eigentlich eine Möglichkeit den ganzen Text innerhalb des Felds ersichtlich zu machen, wenn der Text grösser ist als das Feld, sprich der Text wird bei einem gewissen Punkt mit Pünktchen abgekapselt. Was würdet Ihr vorschlagen mit Focus oder Mouselistener wenn man mit der Maustaste auf das Feld zielt und so den ganzen Text anzeigen. Es muss ja für den Benutzer am einfachsten gehen. Was meint Ihr dazu?:rolleyes:

Danke für die Vorschläge.

Gruss

Rob
 
Ok,

die Suchfunktion hab ich nun gelöst, meine Search-Methode funktioniert mal!;-)

Wollte von Euch wissen... welche Methode man am besten in meinem JFileChooser-Konstruktor einsetzen könnte um die ausgewählte Datei als .txt - (später csv -) File abzuspeichern um diese Datei grad anschliessend innerhalb der JTable anzuzeigen? Es geht hier nur um ein Tip.. :)

Hier meine Codes ...

für Analyse-Klasse:

Code:
/*
 * 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.awt.event.*;
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 java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

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.JOptionPane;

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();
         
        
 
      
         
      
  
    
 
       
      
//     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();
        searchButton = new javax.swing.JButton();
        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:");
        
        searchButton.setText("Suche");

        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);
            }
        });
        //Such-Option, sobald der Benutzer auf die "Suche"-Taste klickt, ruft die Ereignis-Methode die Search-Methode (Such-Funktion) auf
        searchButton.addActionListener(new java.awt.event.ActionListener(){
            public void actionPerformed(java.awt.event.ActionEvent ev) {
                search(ev);
            }
        });
        
        

        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);
        
        /*
        //Event-Registrierung für das Menu-Item "Datei Öffnen": 
        //Nachdem der Benutzer "Datei Öffnen" anklickt, wird ein neues Fenster "Datei Auswahl" erzeugt
         */
        load.addActionListener(new java.awt.event.ActionListener(){
            public void actionPerformed(java.awt.event.ActionEvent ev){
                multiDateiAuswahl(ev);
            } 
        });

        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)
                        .addComponent(searchButton)
                        .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)
                    .addComponent(searchButton, 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:
    }                                    
    


    
    // Variablen Deklaration - 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;
    private javax.swing.JButton searchButton;
    Vector input;   //die ist die Variable für den Vektor
    // Ende der Variablen-Deklaration   
    
 //Die Read-Methode holt sich die Daten, welche vom Benutzer ausgewählt worden sind. Dies wird mit 
 //der multiDateiAuswahl - Methode bewerkstelligt.  
 public void read(){
    
      try {
         BufferedReader eingabe = new BufferedReader(new FileReader("C:\\beispiel.txt")); //hier wird die gewählte Datei als Stream-Ausgabe in die JTable übertragen
         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();
      }
     
    
  }
 //Die Such-Methode, hier wird der String-Text eingegeben, und mit dem Search-Button
 //den Text innerhalb der JTable zu finden
 private void search(java.awt.event.ActionEvent ev) {
        boolean gefunden = false;
        String str = "";
        int i = AnalyseDatenTable.getSelectedRow()+1;
        for (; i < AnalyseDatenTable.getRowCount(); i++) {
            for (int j = 0; j < AnalyseDatenTable.getColumnCount(); j++) {
                str = AnalyseDatenTable.getValueAt(i,j)==null?"":AnalyseDatenTable.getValueAt(i,j).toString();
                if(str.startsWith(InputSearch.getText().trim())){      //Die Suche geht weiter bis das Wort nicht mehr in der JTable gefunden wird
                    AnalyseDatenTable.changeSelection(i,j,false,false);
                    gefunden = true;
                    break; 
                }
            }
            if(gefunden) break;  //der erste Text resp. Wort wird gefunden, dh. wird hier angehalten
        }
        if(!gefunden) {
            JOptionPane.showMessageDialog(null,"Eintrag nicht gefunden",  //wenn nichts gefunden wurde, Fehl-Anzeige für den User, dass nichts gefunden worden ist
                    "Nicht gefunden",JOptionPane.ERROR_MESSAGE);
            AnalyseDatenTable.clearSelection();
        }
    }
 /*
 Die Datei-Auswahl-methode, diese wird über ein Ereignis-Befehl im Menu-Item "Datei Öffnen" aufgerufen.
 Der Benutzer wählt die *.csv-Datei aus mit Hilfe des Datei-Auswahl-Dialogs und übergibt die Parameter
 and den BufferedReader - Konstruktor weiter.
  */
 public void multiDateiAuswahl(java.awt.event.ActionEvent ev) {
    JFileChooser fc = new JFileChooser(); 
    fc.setFileFilter( new FileFilter() 
    { 
      @Override public boolean accept( File f ) 
      { 
        return f.isDirectory() || 
          f.getName().toLowerCase().endsWith( ".csv" ); 
      } 
      @Override public String getDescription() 
      { 
        return "Texte"; 
      } 
    } ); 
 
    int state = fc.showOpenDialog( null ); 
 
    if ( state == JFileChooser.APPROVE_OPTION ) 
    { 
      File file = fc.getSelectedFile(); 
      //welche Methode würdet hier mir vorschlagen, jene aus der Klasse FileWriter oder eine andere Save-Methode?
    } 
    else 
      System.out.println( "Auswahl abgebrochen" ); 
 
    System.exit( 0 ); 
 }


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

hier nochmals der StringModelTable Klasse:

Code:
*
 * 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;
      } 
    }

Thanks again für den grossen Support! ;-)

Grüssli...

Rob
 
Sorry.. habs mal klarer strukturiert.. und nur den bestimmten Code der mir momentan Sorgen macht.... here we go:

Code:
 Die Datei-Auswahl-methode, diese wird über ein Ereignis-Befehl im Menu-Item "Datei Öffnen" aufgerufen.
 Der Benutzer wählt die *.csv-Datei aus mit Hilfe des Datei-Auswahl-Dialogs und übergibt die Parameter
 and den BufferedReader - Konstruktor weiter.
  */
 protected void multiDateiAuswahl(java.awt.event.ActionEvent ev) {
    JFileChooser fc = new JFileChooser(); 
    fc.setFileFilter( new FileFilter() 
    { 
      @Override public boolean accept( File f ) 
      { 
        return f.isDirectory() || 
          f.getName().toLowerCase().endsWith( ".csv" ); 
      } 
      @Override public String getDescription() 
      { 
        return ".csv"; 
      } 
    } ); 
 
    int state = fc.showOpenDialog( null ); 
 
    if ( state == JFileChooser.APPROVE_OPTION ) 
    { 
       
      //File file = fc.getSelectedFile(); to do
       // multiDateiAuswahl(fc.getSelectedFile());
      
     //read();
    // file.getAbsolutePath();
    // file.getName();
      //welche Methode würdet hier mir vorschlagen, jene aus der Klasse FileWriter oder eine andere Save-Methode?
    } 
    else 
      System.out.println( "Auswahl abgebrochen" ); 
 
    dispose(); 
 }

Ich weiss, dass es eine Möglichkeit gibt mit dem FileoutputStream diese mal temporär in einem Buffer einzulesen, um diese Daten dann via einer Read()-Methode in die JTable (meine Tabelle) zu importieren.

Weiss jemand einen Tip?(!)

Gruzz aus der schweiz,

Rob:)
 
Zurück