tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
2568
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    runT runT ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    20
    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...

    Hier mal mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    
    *
     * 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..
    Geändert von runT (01.08.07 um 11:33 Uhr) Grund: Falsches Themengebiet
     

  2. #2
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    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
     

  3. #3
    Avatar von celph_titled
    celph_titled celph_titled ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    107
    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.
     

  4. #4
    chklein chklein ist offline Grünschnabel
    Registriert seit
    Apr 2007
    Beiträge
    3
    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.
     

  5. #5
    runT runT ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    20
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    
    /*
     * 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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    *
     * 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
    Angehängte Dateien Angehängte Dateien
     

  6. #6
    Avatar von celph_titled
    celph_titled celph_titled ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    107
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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();
    }
     

  7. #7
    runT runT ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    20
    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?

    Danke für die Vorschläge.

    Gruss

    Rob
     

  8. #8
    runT runT ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    20
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    
    /*
     * 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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    *
     * 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
     

  9. #9
    runT runT ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    20
    Sorry.. habs mal klarer strukturiert.. und nur den bestimmten Code der mir momentan Sorgen macht.... here we go:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
     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
     

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 30.06.09, 00:45
  2. (JTable) Einzelne Zellen Färben und später ins *.xls übernehmen
    Von sKaH im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 09.05.08, 19:34
  3. JTable aus Vector füllen
    Von tameck im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 14.04.08, 11:03
  4. eigenes JTable Modell mit Übernahme des Vector Vector Konstruktors
    Von Malte Roessner im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 8
    Letzter Beitrag: 02.06.06, 12:31
  5. Antworten: 1
    Letzter Beitrag: 03.02.05, 14:15