Import - Problem: Meine Daten sind in meiner JTable nicht ersichtlich

runT

Mitglied
Hi,

Hab nach mehrmaligen Troubleshooting mein Modul programmieren können. Es geht hier darum, eine gewünschte Text-Datei,in welche Daten mit ; getrennt sind und schliesslich in meiner JTable importiert werden. Ich möchte eben diese Daten angezeigt haben. Nun das Programm läuft so ohne Probleme und Fehler ab, also keine syntaktische oder semantische Issues, aber irgendwie werden die Daten nicht importiert. Könnte mal ein Experte reinschauen, wo der Hund begraben ist? Wäre voll cool......

Hier mein Code - Klasse FileHandler:

Code:
public class FileHandler extends JFrame {
    
   //Variablen deklarieren 
   private File file;
   public Analyse importData;

    
    /** es wird eine Instanz der Klasse FileHandler erzeugt */
    public FileHandler() {
    
    super("Datei Öffnen");
    fileHandler();
    setDefaultCloseOperation(EXIT_ON_CLOSE); //"Datei Öffnen" Fenster muss schliessbar sein
   
  }
    
    protected void fileHandler() {
        
    
    final 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 = new File(pFile);  
      file = fc.getSelectedFile(); //Datei wird selektiert
      importData = new Analyse(); //hier wird eine Instanz des Objekts Analyse auf meine importData Membervariable erzeugt, wird benötigt um meine wichtige read-Methode aufzurufen!
      importData.readData(file); //Daten-Import in die Tabelle
      
    


             
   
    }
    
    else 
      System.out.println( "Auswahl abgebrochen" );

    }
}


und ein Auszug aus meiner Analyse Klasse:
Code:
public void dataLoad() {
......

...

 //Konstruktion der Tabellenstruktur als Vektor - statische Spalten werden beschrieben, um die Daten in die entsprechenden Spalten einzuordnen
        input = new Vector();// #### in diesem Vector speichern
        String columnNames[] = {"REF.NR", "DDS ID", "Gruppe", "Rechner", "Sequenz", "Datum/Uhrzeit", "Relative Zeit", "Störungsmeldung"};
        Object rowData[][] = (Object[][])input.toArray( new Object[ input.size() ][] );
        AnalyseDatenTable.setModel(new StringTableModel(rowData, columnNames));

//hier wird die das File-Dialog(JFileChooser) - Fenster gestartet, um die Datei auszuwählen
public void actionPerformed(java.awt.event.ActionEvent ev){
            String cmd = ev.getActionCommand();
            if (cmd.equals("Datei öffnen")) {
                FileHandler openfile = new FileHandler(); //Objekt openfile aus der Klasse FileHandler erzeugen resp. instanzieren
                
               
            }
    }

 //Die Read-Methode holt sich die Daten, welche vom Benutzer ausgewählt worden sind. Diese Methode referenziert auf die Klasse FileHandler,
 // und wird auf das Objekt importData aufgerufen.  
 
 public void readData(File file){
      
     if (file.exists()){ 
      try {
        
        BufferedReader eingabe = new BufferedReader(new FileReader(file)); //hier wird die    //gewählte Datei als Stream-Ausgabe in die JTable übertragen
      
         int gelesen;
         String eingabezeile;

         eingabezeile=eingabe.readLine();  //Die Textzeilen werden gelesen und die Tabellenzeilen eingegeben

         //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 (FileNotFoundException ex) {
         ex.printStackTrace( );   
      }
      catch( IOException ex ){
         ex.printStackTrace();
      }
     
    }
     
    
  }

Ich bin schon fast am Höhepunkt der Verzweiflung.. das Programm läuft schön ab. Vielleicht kann das ja jemand bei Euch selber testen, gibt mir Bescheid wenn ich mal die 2 Files schicken soll. Hoffentlich kann mir jemand so rasch als möglich helfen, ich muss , dieses kleine Modul (Datei-Funktion) sehr bald abgeben. :confused:

Thanks für die Hilfe.

Gruss

Rob
 
Zuletzt bearbeitet:
Hallo,

ich werd mir das später mal anschauen, wenn ich Zeit hab.
Aber nur mal so zur Info, semantische Fehler sind Fehler in der Logik(Fehler die nicht vom Compiler festgestellt werden), d. h. wenn das Programm nicht funktioniert, sieht es ziemlich nach einem semantischen Fehler aus, oder? ;-)

MFG

zEriX
 
Ne ne...

Absolut keine Fehler..... dies kann ich bestätigen, da mir Netbeans echt keine Fehler anzeigt auch nicht zur Laufzeit des Programms ( und sonst müsste Netbeans meckern wie NullPointerException etc.. )..

Das Debugging im Netbeans hab ich schon verwendet... sieht aber gut aus... die Datei kann gelesen werden und schreibt sich die Werte auch in meine file rein.... und werden dann anschliessen vom FileReader gelesen und in meine eingabe-Variable geladen....

Danke an alle... für die Hilfe.

Gruss

Rob:)
 
Zuletzt bearbeitet:
Ne ne...

Absolut keine Fehler..... dies kann ich bestätigen, da mir Netbeans echt keine Fehler anzeigt auch nicht zur Laufzeit des Programms ( und sonst müsste Netbeans meckern wie NullPointerException etc.. )..

Ich weiß ja nicht an wen das gedacht war, aber semantische Fehler müssen nicht unbedingt Exceptions auslösen. ;-)
Es heißt nur, dass die Logik nicht stimmt und somit das Programm nicht funktioniert.

MFG

zEriX
 
Sorry... ich habs falsch verstanden. Ich hab gemeint, du wolltest auf die Exceptions hinaus... ok mein Fehler:rolleyes:

Ich denke schon, dass es einen logischen Fehler auf sich hat.... aber eben... ist schwierig, wenn du alles probierst.... und kein Fehler angezeigt wird.

Trotzdem ich danke dir vielmals für das Überprüfen.

Gruss

Rob;-)
 
Ein Vorschlag ist, wie Andron schon gesagt hat, Lass das Programm mal mit dem Debugger laufen und geh beim import Schritt für Schritt(Zeile für Zeile) durch. Überprüfe alle Variablen. So findest du am schnellsten den Fehler. Egal wer dir hilft, er wird zu 90% das gleiche tun.

Netbeans kann auch debuggen.

Falls du den noch nie benutzt hast, arbeite dich mal ein und benutz ihn einfach. Du wirst sehen, dass du mit der Zeit wesentlich schneller Fehler findest.


MFG

zEriX
 
Da ich eben in diesem Modul eine weitere Funktion implementieren muss... und nicht einfach warten kann bis das File-Problem gelöst ist... wollte ich schon mal weiter. Der Wunsch ist noch, dass innnerhalb der JFrame noch zusätzliche Infos angezeigt werden müssen, wenn eine Zeile in der Table angeklickt wurde. Das möchte der Kunde so, dafür habe ich zwei JTextAreas programmiert. Die Text-Datei, welche ja geöffnet wird und in meinem Tabellenmodell gestreamt wurde, hat noch 2 zusätzliche Textspalten. Diese sind ganz am Schluss angehängt. In diesen 2 Spalten sind Textinformationen drin.

Wie kann ich mit einer Action-Methode (MouseListener_Mausklick) nur auf die entsprechende Spalte (die letzten 2 Spalten) zeigen und den Wert der Zeile 1, 2 .. etc mit einer get-Methode(evtl. getValueAt) holen und in meiner TextArea anzeigen.

Vorgang: Benutzer klickt auf eine Zeile x innerhalb der Tabelle, gleichzeitig werden zusätzlich HintergrundInformationen dieser Zeile x(die sind in meiner Tabelle als Benutzer nicht ersichtlich, aber in meinem Tabellenmodell verfügbar) in den jeweiligen JTextArea's, angezeigt. Gemäss Spalte wird die entsprechende Information in der zugeordneten TextArea angezeigt.

Was meint Ihr... es ist komplex, aber sicher machbar. Könnt Ihr mir zeigen wie das am Besten geht?:rolleyes:

Kann mir jemand in dieser Beziehung helfen?

Thanks again...

Gruss

Rob:)
 
Danke für dein Feedback Zerix....

Ich werde sicher nochmals den Debugger anwenden... nur hab das auch schon vorher eingesetzt, aber nix gefunden... Mehrere Augen lokalisieren den Fehler sicher... aber werde sicher den Debugger nochmals laufen lassen.... wird sicher kein einfacher, aber sicher mal ein langer Tag!

Gruss

Rob
 
Keine Chance....

Sehe den Fehler einfach nicht.. Zerix hast du was gefunden was mir weiterhelfen könnte? Vielleicht kann mir jemand noch helfen.... ich bin jetzt definitiv in einer Sackgasse!

Ich bin überzeugt jemand kann mir aus der patsche helfen.:confused:

Gruss

Rob;-)
 
Zurück