Добавить файл .txt к TextArea в Java - PullRequest
2 голосов
/ 14 сентября 2011

Я видел много сайтов, которые описывают, как добавлять текст в textarea, но есть ли способ получить данные из всего файла .txt и отобразить их в текстовой области?

Я играл с различными вещами, чтобы поставить в линию, как это:

outputTextArea.append(????);

Но пока не повезло.

Супер новичок в Java и не очень хорошо с терминологией, но янадеюсь, я хорошо объяснил свой вопрос.


РЕДАКТИРОВАТЬ: Это не позволит мне ответить на мой собственный вопрос, поэтому я просто собираюсь поставить его здесь.

Я использую JTextArea, но, думаю, я немного перегружен.Я не совсем уверен, что я вижу, но это то, о чем вы говорили?

public FileReader(String fileName);

У меня так далеко.

FileWriter fwriter = new FileWriter("BigMoneys.txt", true);
PrintWriter outputFile = new PrintWriter(fwriter);

for (int year = 1; year<= 10; year++)
{
    amount = principal * Math.pow(1.0 + rate, year);
    outputFile.append( year + "\t" + moneyFormat.format(amount) + "\n");

}

outputFile.close();

JOptionPane.showMessageDialog(null, outputTextArea, "Compound Interest", JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

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

Все, что я знаю, это то, что я должен использовать то, что находится в outputFile, и добавить его кoutputTextArea.Честно говоря, я не пытаюсь заставить вас сделать мою домашнюю работу для меня, я просто действительно потерян.

Так что, если я должен использовать эту строку выше, могу ли я сделать это?

FileReader(String fwriter)


РЕДАКТИРОВАТЬ2: Это то, что я получил до сих пор.Пожалуйста, скажите мне, если я на правильном пути.

import java.util.Scanner;
import java.io.*;
import java.text.NumberFormat;  //class for numeric formatting
import java.util.Locale;        //class for country-specific information
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Interest3
{
    public static void main(String[] args) throws IOException
    {
        double amount,  //amount of deposit at end of each year
            principal,  //initial amount before interest
            rate;       //rate of interest
        String input;
        String filename;

        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter the filename: ");
        filename = keyboard.nextLine();

        //create NumberFormat for currency in US dollar format
        NumberFormat moneyFormat = NumberFormat.getCurrencyInstance( Locale.US );

        //create JTextArea to display output
        JTextArea outputTextArea = new JTextArea();

        input = JOptionPane.showInputDialog("Please enter Principal: ");
        principal = Double.parseDouble(input);

        input = JOptionPane.showInputDialog("Please enter Interest Rate (Format: 0.00) ");
        rate = Double.parseDouble(input);

        outputTextArea.setText("Year\tAmount on deposit\n");

        //open new file for writing
        PrintWriter outputFile = new PrintWriter(filename);

        //calculate amount on deposit for each of ten years
        for (int year = 1; year<= 10; year++)
        {
            amount = principal * Math.pow(1.0 + rate, year);

            // append one line of text to outputTextArea
            outputFile.append( year + "\t" + moneyFormat.format(amount) + "\n");

        }

        outputFile.close();

        //open file for reading
        File file = new File(filename);
        FileReader rd = new FileReader(file);

        outputTextArea.append(rd);

        //display results
        JOptionPane.showMessageDialog(null, outputTextArea, "Compound Interest", JOptionPane.INFORMATION_MESSAGE);

        System.exit(0);
    }

}

У меня есть ошибка в строке с outputTextArea.append(rd);, которая говорит "append (java.lang.String) в javax.swing.JTextArea нельзя применить к (java.io.FileReader) ", поэтому я явно чего-то там упускаю.


EDIT3: Ааа, и я думаю, что у меня это получилось!Спасибо всем за помощь.Дело закрыто, спокойной ночи:)

Ответы [ 6 ]

3 голосов
/ 14 сентября 2011

Так как это не сайт "Пожалуйста, я буду кодировать", я не собираюсь давать код для этого.Вместо этого вот пара указателей:

  1. Используйте FileReader или что-то похожее для чтения файла и поместите содержимое в строку.
  2. Затем вы можетедобавьте его в конец вашей JTextArea, как предложено.

PS Вы можете рассмотреть JTextArea и Swing вместо простого AWT.

См. Также:

Как использоватьТекстовые области

Потоки символов

2 голосов
/ 14 сентября 2011

Почему бы вам не записать текст в JTextArea в то же время, когда вы записали его в файл:

FileWriter fwriter = new FileWriter("BigMoneys.txt", true);
PrintWriter outputFile = new PrintWriter(fwriter);
for (int year = 1; year<= 10; year++) {
    amount = principal * Math.pow(1.0 + rate, year);
    String line = year + "\t" + moneyFormat.format(amount) + "\n";
    outputTextArea.append(line);
    outputFile.append(line);
}
outputFile.close();
JOptionPane.showMessageDialog(null, outputTextArea, "Compound Interest", JOptionPane.INFORMATION_MESSAGE);
System.exit(0); 

Это должно сработать.

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

1 голос
/ 14 сентября 2011

Вы можете использовать EditorKit, чтобы сделать это для вас:

JTextArea edit = new JTextArea(...);
...
try
{
    FileReader reader = new FileReader( "TextAreaLoad.txt" );
    BufferedReader br = new BufferedReader(reader);
    EditorKit kit = edit.getUI().getEditorKit(edit);
    Document doc = edit.getDocument();
    kit.read(br, doc, doc.getLength());
    br.close();
}
catch(Exception e2) { System.out.println(e2); }
1 голос
/ 14 сентября 2011

Фокусируясь только на проблеме «чтение содержимого из файла и помещение его в JTextArea», вот что вам нужно:

//open file for reading
File file = new File(filename);
BufferedReader rd = new BufferedReader(new FileReader(file));
String line;
while ((line = rd.readLine()) != null)
    outputTextArea.append(line + "\n");
rd.close();
//display results
JOptionPane.showMessageDialog(null, outputTextArea, "Compound Interest", JOptionPane.INFORMATION_MESSAGE);

Обратите внимание, что я подаю в суд на BufferedReader, чтобы файлчитать строку за строкой, а не читать ее полностью за один раз, что фактически приведет к более сложному коду.

1 голос
/ 14 сентября 2011

Считайте файл и сохраните его содержимое в строку, а затем добавьте строку в текстовую область.

Вы не найдете какой-либо ярлык в (J) TextArea для чтения файла для вас, потому что это не его делоТекст может поступать из файла, базы данных, соединения через сокет или где-либо еще.Это не ответственность текстовой области, чтобы прочитать текст из всех этих потенциальных мест.Его обязанность - отображать текст, который вы ему даете.

Так что читайте текстовый файл самостоятельно.См. учебник по Java о символьных потоках .

0 голосов
/ 14 сентября 2011

В JDK включена демонстрация JProgressBar (папка demo / jfc / SwingSet2), которая, кажется, соответствует тому, что вы хотите.Также предоставляется исходный код.

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