2012-03-25 2 views
1

Ich möchte die Werte der CSV-Datei lesen und in der AWT-Tabelle anzeigen, wenn Start-Taste gedrückt wird. Das Drücken der Stopptaste sollte aufhören, die Werte zu lesen. Reset-Taste muss verwendet werden, um die Tabelle zu löschen. Ich bin neu in AWT. Hier ist was ich versucht habe.Lesen der Werte der CSV-Datei und Anzeige in AWT-Tabelle

package AWTTable; 

    import java.awt.*; 
    import java.sql.*; 
    import java.util.*; 
    import javax.swing.*; 
    import java.awt.event.*; 
    import java.io.BufferedReader; 
    import java.io.FileReader; 

    /** 
    * 
    * @author Admin 
    */ 
    public class AWTTableUpdate { 

     public static void main(String[] args) { 
      Frame f = new Frame(); 
      Label label = new Label("Date and Time "); 
      Label label1 = new Label(" Name"); 
      Label label2 = new Label("contents"); 
      final Vector columnNames = new Vector(); 
      final Vector data = new Vector(); 
      final TextField text = new TextField(20); 
      Button b = new Button("Start"); 
      Button b1 = new Button("Stop"); 
      Button b2 = new Button("Reset"); 
      b.addActionListener(new ActionListener() { 

       public void actionPerformed(ActionEvent e) { 


        try { 

         String strFile = "c:/companylist.csv"; 

         BufferedReader br = new BufferedReader(new FileReader(strFile)); 
         String strLine = ""; 
         StringTokenizer st = null; 
         int lineNumber = 0, tokenNumber = 0; 

         ArrayList<String> arrayList = new ArrayList<String>(); 

         while ((strLine = br.readLine()) != null) { 
          lineNumber++; 

          st = new StringTokenizer(strLine, ","); 
          while (st.hasMoreTokens()) { 

           tokenNumber++; 
           arrayList.add(st.nextToken()); 

          tokenNumber = 0; 
         } 
         Object[] elements = arrayList.toArray(); 

         Scanner input = new Scanner(System.in); 
         System.out.print("Enter Ticker symbol"); 

        } }catch (Exception e1) { 
         System.out.println("Exception while reading csv file: " + e1); 
        } 

        JTable table = new JTable(data, columnNames); 
        JScrollPane scrollPane = new JScrollPane(table); 
        JFrame frame = new JFrame(); 
        frame.add(scrollPane); 
        frame.setVisible(true); 
        frame.pack(); 
        frame.repaint(); 
       } 
      }); 
      Panel p = new Panel(new GridLayout(6, 6)); 
      p.add(label); 
      p.add(label1); 
      p.add(label2); 
     // p.add(text); 
      p.add(b); 
      p.add(b1); 
      p.add(b2); 
      f.add(p); 
      f.setVisible(true); 
      f.pack(); 
     } 
    } 

Was ich bekomme ist nicht in Form von Tabelle. Nach dem Klicken auf den Start-Button bekomme ich ein leeres Fenster. Aber ich möchte die Daten anzeigen. Danke

Antwort

1

Ihre Datenvektor initialisiert wird, aber nie mit Daten ausgefüllt, sollten Sie eine „add“ Anweisung nach der Anordnung von Elementen zu erhalten:

Object[] elements = arrayList.toArray(); 
data.add(elements); 

Auch diese Aussagen bis zum Ende des Umzugs äußere Schleife, so dass Sie zu Ihren Datenvektorzeilen Daten hinzufügen können, anstatt einer einzelnen Zeile mit allen Feldern jeder Zeile in einer einzelnen Zeile.

Darüber hinaus könnten Sie daran interessiert sein, eine Ihrer Schaltflächen mit einer Anweisung "data.clear()" zu verknüpfen.


By the way, sehe ich eine Art seltsamer Logik in Ihrer inneren Schleife, wenn die Anzahl von Token zu zählen:

while (st.hasMoreTokens()) { 

    tokenNumber++; 
    arrayList.add(st.nextToken()); 

    tokenNumber = 0; 
} 

Ihre letzte Anweisung innerhalb dieser Schleife sollte außerhalb davon sein, sonst wird Ihre Die Variable "tokenNumber" enthält immer den Wert 0 oder 1.

+0

Und Sie bieten keine Spaltennamen. Und warum brauchst du den Anruf zum Scanner in dieser While-Schleife? Und es ist ein bisschen komisch, auf diese Weise mit Schwung zu mischen. Die Strukturierung Ihres Codes in mehrere kleine Methoden könnte dazu beitragen, Ihre Absicht klarzustellen. – nansen

+0

Sie haben Recht, er mischt Swing und AWT, aber sein Code, der nur mit Swing-Komponenten geschrieben wurde, zeigt nichts, da er die Tabelle mit einem leeren Vektor initialisiert. Ich versuche nur, sein Problem zu lösen, ohne alles neu schreiben zu müssen. –

Verwandte Themen