Чтение значений файла csv и отображение его в таблице AWT - PullRequest
1 голос
/ 25 марта 2012

Я хочу прочитать значения файла CSV и отобразить его в таблице AWT при нажатии кнопки запуска.Нажатие кнопки остановки должно прекратить чтение значений.Кнопка сброса должна использоваться, чтобы очистить стол.Я новичок в 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 Ответ

1 голос
/ 25 марта 2012

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

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

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

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


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

while (st.hasMoreTokens()) {

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

    tokenNumber = 0;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...