ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
2568
2568
EMPFEHLEN
-
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
-
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
-
01.08.07 12:22 #3
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.
-
HallöchenAusserdem 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.
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
-
03.08.07 15:26 #6
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(); }
-
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
-
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
-
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
-
PHP-Datei einlesen und später abarbeiten
Von tuFrogs im Forum PHPAntworten: 10Letzter Beitrag: 30.06.09, 00:45 -
(JTable) Einzelne Zellen Färben und später ins *.xls übernehmen
Von sKaH im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 09.05.08, 19:34 -
JTable aus Vector füllen
Von tameck im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 14.04.08, 11:03 -
eigenes JTable Modell mit Übernahme des Vector Vector Konstruktors
Von Malte Roessner im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 8Letzter Beitrag: 02.06.06, 12:31 -
File Handling File einlesen / verändern und als Objekt speichern
Von Snaker im Forum JavaAntworten: 1Letzter Beitrag: 03.02.05, 14:15





Zitieren
Login





