使用JFileChooser时,如何在TextArea中显示文本文件的内容。
答案 0 :(得分:2)
您必须阅读官方的Oracle JTextArea tutorial
特别是方法JTextArea.read(fileSelectedFromJFileChooser),在这种情况下可能正确
这里找到一个示例程序,为了您的帮助,但如果要读取的文件很长,那么请始终使用SwingWorker的帮助:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ReadFileExample
{
private BufferedReader input;
private String line;
private JFileChooser fc;
public ReadFileExample()
{
line = new String();
fc = new JFileChooser();
}
private void displayGUI()
{
final JFrame frame = new JFrame("Read File Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea tarea = new JTextArea(10, 10);
JButton readButton = new JButton("OPEN FILE");
readButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
int returnVal = fc.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//This is where a real application would open the file.
try
{
input = new BufferedReader(
new InputStreamReader(
new FileInputStream(
file)));
tarea.read(input, "READING FILE :-)");
}
catch(Exception e)
{
e.printStackTrace();
}
} else {
System.out.println("Operation is CANCELLED :(");
}
}
});
frame.getContentPane().add(tarea, BorderLayout.CENTER);
frame.getContentPane().add(readButton, BorderLayout.PAGE_END);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new ReadFileExample().displayGUI();
}
});
}
}
答案 1 :(得分:1)
您的问题尚不清楚,但我假设您要将JTextArea添加到JFileChooser,以便它可以像文件预览面板一样。
您可以使用setAccessory()方法将JTextArea添加到JFileChooser。
此tutorial on JFileChooser显示如何在附件显示文件中的图像而不是文件中的文本时执行类似操作。
您需要小心处理不包含文本的文件,或者文件太大,或者由于权限等原因无法打开的文件。需要花费很多精力才能使其正确