0

GUI で作成した JTextArea にテキスト ファイルの情報を表示しようとしています。ファイルから JTextArea に情報を取得する方法はわかりましたが、ファイルの最後の行しか取得していません。すべての行を表示する必要があります。ループを変更し続けていますが、これを理解できません。どんな助けでも大歓迎です。これが私のコードを見てください:

public TextArea() {
    initComponents();


    try {
        FileReader one = new FileReader ("info.txt");
        BufferedReader buf = new BufferedReader(one);

        String line = "";
        StringTokenizer st = null;
        int lineNumber = 0, tokenNumber = 0;
        //textArea.setText(line);

        while ((line = buf.readLine()) != null) {
            lineNumber++;

            //break comma separated line using ","
            st = new StringTokenizer(line, ",");

            while (st.hasMoreTokens()) {
                //display csv values
                tokenNumber++;
                line = ("Title: " + st.nextToken()
                        + "\n" + "Make:" + st.nextToken()
                        + "\n" + "Model:" + st.nextToken()
                        + "\n" + "Year:" + st.nextToken()
                        + "\n" + "Price:" + st.nextToken()
                        + "\n" + "Notes:" + st.nextToken()
                        + "\n" + "Details:" + st.nextToken()
                        + "\n");

                textArea.setText(line);
            }

            //reset token number
            tokenNumber = 0;
            //textArea.setText(line);
        }

    } catch (FileNotFoundException e) {
        JOptionPane.showMessageDialog(this, "File not found");
    } catch (IOException e){
        JOptionPane.showMessageDialog(this, "Data not read");
    }
4

3 に答える 3

1

あなたのコードを見てください:

while (st.hasMoreTokens()) {
            //display csv values
            tokenNumber++;
            line = ("Title: " + st.nextToken()
                    + "\n" + "Make:" + st.nextToken()
                    + "\n" + "Model:" + st.nextToken()
                    + "\n" + "Year:" + st.nextToken()
                    + "\n" + "Price:" + st.nextToken()
                    + "\n" + "Notes:" + st.nextToken()
                    + "\n" + "Details:" + st.nextToken()
                    + "\n");

            textArea.setText(line);
        }

新しいトークンを見つけるたびに、textarea val を最後に見つかったトークンに設定します。したがって、明らかにテキスト領域には最後の行のみが表示されます。次のようなものを試すことができます:

textArea.setText(textArea.getText() + line);
于 2011-04-10T17:43:32.300 に答える
0

行変数をオーバーライドしていると思います。

line+=...

連結してから、ループの外側で連結された行全体の値を設定します。

于 2011-04-10T17:45:15.073 に答える
0
while (st.hasMoreTokens()) {
            //display csv values
            tokenNumber++;
            line = line +"\n"+("Title: " + st.nextToken()
                    + "\n" + "Make:" + st.nextToken()
                    + "\n" + "Model:" + st.nextToken()
                    + "\n" + "Year:" + st.nextToken()
                    + "\n" + "Price:" + st.nextToken()
                    + "\n" + "Notes:" + st.nextToken()
                    + "\n" + "Details:" + st.nextToken()
                    + "\n");


        }
 textArea.setText(line);
于 2011-04-10T17:46:39.677 に答える