JTextArea不显示新行上的文件内容 [英] JTextArea Does Not Display File Contents On New Lines

查看:189
本文介绍了JTextArea不显示新行上的文件内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在滚动窗格中使用JTextArea时遇到问题。我可以从一个文本文件读取,但内容都显示在一行。我已经尝试过使用append的各种方法,并试图打破这一行,但没有成功。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class SplashScreen extends JFrame implements ActionListener
{

JButton mobile;
JButton浏览器;
JLabel welc;
JPanel回家;
File file = new File(C:\\ Users \\Jimbob\\Desktop\\DisWorkspace\\TrustWizard\\welcometwo.txt);
BufferedReader reader = null;
int lines = 10;

public String read()
{
String savetext =;

尝试
{
reader = new BufferedReader(new FileReader(file));
String text = null; ((text = reader.readLine())!= null)



savetext + = text;

$ b $ catch(IOException jim)
{
jim.printStackTrace();
}
return savetext;


public void actionPerformed(ActionEvent e)
{
if(e.getSource()。equals(mobile))
{
MobileHome openB = new MobileHome();
this.dispose();

if(e.getSource()。equals(browser))
{
BrowserHome openB = new BrowserHome();
this.dispose();


$ b $ public SplashScreen()
{
super(Trust Wizard);

JTextArea homeText = new JTextArea(25,30);
homeText.setText(read());

JScrollPane homeScroll = new JScrollPane(homeText);

welc = new JLabel(欢迎使用信任向导);
home = new JPanel();
mobile = new JButton(Mobile Wizard);
browser = new JButton(Browser Wizard);

home.add(welc);
home.add(homeScroll);
home.add(手机);
home.add(浏览器);

ImageIcon img = new ImageIcon(hand.jpg);
setIconImage(img.getImage());

mobile.addActionListener(this);
browser.addActionListener(this);

getContentPane()。add(home);
home.repaint();
setSize(450,530);
setVisible(true);


$ public static void main(String args [])
{
SplashScreen test = new SplashScreen();


$ b $ / code $ / $ p

解决方案

  // homeText.setText(read() ); 

相反,只需使用JTextArea API提供的read()方法即可:

  FileReader reader = new FileReader(您的文件名在这里); 
BufferedReader br = new BufferedReader(reader);
homeText.read(br,null);
br.close();


I'm having an issue using a JTextArea within a scrollpane. I can read from a textfile, but the contents are all showing up on one line. I have tried various methods using append and trying to break the line, but with no success.

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class SplashScreen extends JFrame implements ActionListener
{

    JButton mobile;
    JButton browser;
    JLabel welc;
    JPanel home;
    File file = new File("C:\\Users\\Jimbob\\Desktop\\DisWorkspace\\TrustWizard\\welcometwo.txt");
    BufferedReader reader = null;
    int lines = 10;

    public String read()
    {
        String savetext = "";

        try
        {
            reader = new BufferedReader(new FileReader(file));
            String text = null;

            while((text = reader.readLine()) != null)
            {
                savetext += text;
            }
        }
        catch(IOException jim)
        {
            jim.printStackTrace();
        }
        return savetext;
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource().equals(mobile))
        {
            MobileHome openB = new MobileHome();
            this.dispose();
        }
        if(e.getSource().equals(browser))
        {
            BrowserHome openB = new BrowserHome();
            this.dispose();
        }
    }

    public SplashScreen()
    {
        super("Trust Wizard");

        JTextArea homeText = new JTextArea(25, 30);
        homeText.setText(read());

        JScrollPane homeScroll = new JScrollPane(homeText);

        welc = new JLabel("Welcome To The Trust Wizard");
        home = new JPanel();
        mobile = new JButton("Mobile Wizard");
        browser = new JButton("Browser Wizard");

        home.add(welc);
        home.add(homeScroll);
        home.add(mobile);
        home.add(browser);

        ImageIcon img = new ImageIcon("hand.jpg");
        setIconImage(img.getImage());

        mobile.addActionListener(this);
        browser.addActionListener(this);

        getContentPane().add(home);
        home.repaint();
        setSize(450, 530);
        setVisible(true);

    }

    public static void main(String args[])
    {
        SplashScreen test = new SplashScreen();

    }
}

解决方案

Don't write your own method to load data into a JTextArea.

//homeText.setText(read());

Instead, just use the read() method provided by the JTextArea API:

FileReader reader = new FileReader( your file name here );
BufferedReader br = new BufferedReader(reader);
homeText.read( br, null );
br.close();

这篇关于JTextArea不显示新行上的文件内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆