麻烦大家帮帮我..
问题列表:
<问题1> 文件1.txt如果是多行文件只能显示最后一行
<问题2>读多行文件死机
<问题3>如果来用JFileChoose返回一个文件路径,要能让FileReader认可的,因为D:\1.txt路径不成,还是要改成D:\\1.txt,要多一个' \ '机器才不报错,这问题怎么解决?
<问题4> null如何改成正确的调用窗口对象
代码:
*************************************************************************************
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Notepad
{
public static void main(String[] args)
{
AFrame frame = new AFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class AFrame extends JFrame
{
APanel panel;
public AFrame()
{
setSize(500,500);
setTitle("NotepadDemo");
setResizable(false);
Container c = getContentPane();
panel = new APanel();
c.add(panel);
MenuInit();
}
void MenuInit() //初始化菜单
{
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("操作");
JMenuItem menuFileNew = new JMenuItem("新建..");
JMenuItem menuFileOpen = new JMenuItem("打开..");
JMenuItem menuFileSave = new JMenuItem("保存..");
JMenuItem menuFileSaveAs = new JMenuItem("另存为..");
JMenuItem menuFileExit = new JMenuItem("退出");
setJMenuBar(menuBar);
menuBar.add(menuFile);
menuFile.add(menuFileNew);
menuFile.add(menuFileOpen);
menuFile.add(menuFileSave);
menuFile.add(menuFileSaveAs);
menuFile.add(menuFileExit);
menuFileNew.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel.textArea.setText("");
}
});
menuFileOpen.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String fileName;
JFileChooser jc = new JFileChooser();
int returnVal = jc.showDialog(null,"打开"); // <问题4> null如何改成正确的调用窗口对象
if(returnVal==JFileChooser.APPROVE_OPTION)
{
fileName = jc.getSelectedFile().getPath();
//panel.textArea.setText(fileName);
}
//读取文件
//<问题3>如果来用JFileChoose返回一个文件路径,要能让FileReader认可的,因为D:\1.txt路径不成,还是要改成D:\\1.txt,机器才不报错,这问题怎么解决?
try
{
FileReader fr = new FileReader("1.txt"); //<问题1> 文件1.txt如果是多行文件只能显示最后一行
BufferedReader br = new BufferedReader(fr);
String line=br.readLine();
while(line != null)
{
panel.textArea.setText(line);
line = br.readLine(); //<问题2> 这行命令如果改成 while(line != null)
// {
// line +=br.readLine();} panel.textArea.setText(line); 就会死机,也读不了多行文件
}
}
catch (Exception ea)
{
System.out.println(ea);
}
}
});
}
}
class APanel extends JPanel
{
JTextArea textArea = new JTextArea();
APanel()
{
textArea.setColumns(44);
textArea.setRows(33);
add(textArea);
}
}