2012-03-25 2 views
1

Я хочу прочитать значения csv-файла и отобразить его в таблице AWT при нажатии кнопки запуска. Нажатие кнопки остановки должно прекратить чтение значений. Кнопка сброса должна использоваться для очистки таблицы. Я новичок в AWT. Вот что я пробовал.Чтение значений csv-файла и отображение его в таблице AWT

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

То, что я получаю, не в виде таблицы. После нажатия кнопки «Пуск» я получаю пустое окно. Но я хочу отобразить данные. Спасибо

ответ

1

Ваш вектор данных инициализируется, но никогда не заполнены данными, вы должны иметь «добавить» заявление после получения массива элементов:

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

двигаться Также эти заявления к концу внешний цикл, поэтому вы можете добавить в свои строки данных данные данные вместо одной строки со всеми полями каждой строки в одном.

Кроме того, вам может быть интересно связать одну из ваших кнопок с инструкцией «data.clear()».


Кстати, я вижу некую странную логику внутри вашего внутреннего контура при подсчете количества жетонов:

while (st.hasMoreTokens()) { 

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

    tokenNumber = 0; 
} 

Ваше последнее утверждение внутри этого цикла должен быть вне его, в противном случае Переменная «tokenNumber» всегда будет содержать значение 0 или 1.

+0

И вы не указываете имена столбцов. И почему вам нужен вызов сканера в этом цикле? И немного странно смешивать awt с качелями. Структурирование вашего кода несколькими небольшими методами может помочь сделать ваше намерение четким. – nansen

+0

вы правы, он смешивает Swing и AWT, но его код, написанный только с компонентами Swing, ничего не покажет, поскольку он инициализирует таблицу пустым вектором. Я просто пытаюсь решить его проблему, не переписывая все. –

Смежные вопросы