Загрузка текстового файла в JtextArea - PullRequest
0 голосов
/ 03 апреля 2012

Я часами пытался загрузить содержимое текстового файла в JTextArea. Я могу загрузить текст в консоль, но не в JTextArea. Я не знаю, что я делаю неправильно. Спасибо за любую помощь, спасибо!

Класс для программы

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;


public class LoadClass extends JPanel
{
    JPanel cards;
    private JPanel card1;
    private JTextArea textarea1;
    private int currentCard = 1;
    private JFileChooser fc;

    public LoadClass()
    {
        Font mono = new Font("Monospaced", Font.PLAIN, 12);

        textarea1 = new JTextArea();
        textarea1.setFont(mono);



        card1 = new JPanel();
        card1.add(textarea1);




        cards = new JPanel(new CardLayout());
        cards.add(card1, "1");


        add(cards, BorderLayout.CENTER);



        setBorder(BorderFactory.createTitledBorder("Animation here"));
        setFont(mono);
    }

    public void Open()
    {
        textarea1 = new JTextArea();


        JFileChooser chooser = new JFileChooser();
        int actionDialog = chooser.showOpenDialog(this);
        if (actionDialog == JFileChooser.APPROVE_OPTION)
        {
            File fileName = new File( chooser.getSelectedFile( ) + "" );
            if(fileName == null)
                return;
            if(fileName.exists())
            {
                actionDialog = JOptionPane.showConfirmDialog(this,
                                   "Replace existing file?");
                if (actionDialog == JOptionPane.NO_OPTION)
                    return;
            }
            try
            {

                String strLine;
                 File f = chooser.getSelectedFile();
                 BufferedReader br = new BufferedReader(new FileReader(f));

                while((strLine = br.readLine()) != null)
                {
                    textarea1.append(strLine + "\n");

                    System.out.println(strLine);

                }
            }
            catch(Exception e)
            {
                System.err.println("Error: " + e.getMessage());
            }
        }
    }

}

Основная программа

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class LoadMain extends JFrame
{

    private LoadClass canvas;

    private JPanel buttonPanel;
    private JButton btnOne;



    public LoadMain()
    {

        super("Ascii Art Program");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(new BorderLayout());
        canvas = new LoadClass();

        buildButtonPanel();

        add(buttonPanel, BorderLayout.SOUTH);
        add(canvas, BorderLayout.CENTER);

        pack();
        setSize(800, 800);
        setVisible(true);

    }
    private void buildButtonPanel()
    {
        buttonPanel = new JPanel();

        btnOne = new JButton("Load");


        buttonPanel.add(btnOne);



        btnOne.addActionListener(new btnOneListener());


    }
    private class btnOneListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if (e.getSource() == btnOne)
            {
                canvas.Open();
            }
        }
    }


    public static void main(String[] args)
    {
        new LoadMain();
    }

}

1 Ответ

1 голос
/ 03 апреля 2012
public void Open()
{
    textarea1 = new JTextArea();

Измените это на:

public void Open()
{
    //textarea1 = new JTextArea();  // or remove completely

Второе созданное поле сбивает с толку.

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