我在滾動窗格中使用JTextArea時遇到問題。我可以從文本文件中讀取,但內容全部顯示在一行上。我嘗試過使用append嘗試各種方法,試圖打破這條線,但沒有成功。JTextArea不會顯示新行上的文件內容
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();
}
}
讀你必須追加該行每行由'\ N'換行符轉義序列之後。 – Smit 2013-05-01 20:14:22
我擔心滾動窗格的首選大小實際上是0x0(或足夠接近),所以它沒有顯示出來。嘗試給文本區域一個列和行值,以鼓勵它具有更大的尺寸 – MadProgrammer 2013-05-01 20:14:37
'BufferedReader.readLine()'通過吃掉換行符來破壞你的數據。你必須自己添加它們,但是你永遠不知道你是否加回了正確的換行符,或者如果最後一行在最後有一個換行符。或者更好的是,不要使用這種方法。沒有理由必須逐行讀取數據。只需使用其他'read()'方法之一。 – 2013-05-01 20:46:30