当前位置: 代码迷 >> Java相关 >> [求助]制作记事本的小问题,大麻烦
  详细解决方案

[求助]制作记事本的小问题,大麻烦

热度:167   发布时间:2006-10-19 12:05:36.0
[求助]制作记事本的小问题,大麻烦

麻烦大家帮帮我..
问题列表:
<问题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);
}

}


搜索更多相关的解决方案: 记事本  STRONG  麻烦  文件  

----------------解决方案--------------------------------------------------------
不要一开始就写这些东西,先把基础的学好一下吧
JAVA.IO很多东西要慢慢学的
----------------解决方案--------------------------------------------------------
知道了,你有没有从基础学起的好的方法,多看我做的到,多练我可能差了一点儿

有没有什么好的书,THINK IN JAVA3 我看了一半,觉得还是很有用,但有些不够基础...

像你所说,我也知道我的基础知识确实相当薄弱..我现在有点儿该补的太多,有点不知从何补起了..

你能给我点儿建议吗? 谢谢!!

----------------解决方案--------------------------------------------------------
学东西一步一步来
比如说,先学习如何把一些字符串写入到文件中去
然后再学习如何把它们读进来
再学习 ,如何修改文本文件
然后再把界面构造出来,做成一个小小的记事本的样子
这期间,不但你的JAVA.IO要学得好,并且javax.swing和java.awt.event这些包都要学好
并且明白它们工作的原理和思想
这样以后就可以运用自如了,即使碰到陌生的问题,也会用以前学过的知识并结合自己的思考,把它解决的.
实在解决不了,再到网上问问

----------------解决方案--------------------------------------------------------

行吧..那问题我先留着....
如果说以后我只做JAVA WEB方面的东西,最最常用的类是哪些?

告诉我下,我重点看看他们的每个方法.


----------------解决方案--------------------------------------------------------
如查从事JAVA WEB则不用学javax.swing 了,你把javax.servlet下面学学就可以了
java.lang和java.util是要学的

----------------解决方案--------------------------------------------------------
行..知道了..谢谢了
----------------解决方案--------------------------------------------------------

//该程序实现了文件的打开和保存简单的功能
本人初学者 一个java爱好者!
主要应用java中流的功能
import java.awt.event.*;

import javax.swing.*;
import java.io.*;
import java.awt.*;
public class Note extends JFrame implements ActionListener {
private JButton open;
private JButton save;
private JButton exit;
private JTextArea ta;
private JScrollPane jp;
private JPanel p1;
private JPanel p2;
public Note() {
super();
Container contentPane=getContentPane();
contentPane.setLayout(new BorderLayout());
p1=new JPanel();
open=new JButton("open");
open.addActionListener(this);
save=new JButton("save");
save.addActionListener(this);
exit=new JButton("exit");
exit.addActionListener(this);
p1.add(open);
p1.add(save);
p1.add(exit);
contentPane.add(BorderLayout.SOUTH,p1);
p2=new JPanel();
p2.setLayout(new BorderLayout());
ta=new JTextArea();
jp=new JScrollPane(jp.VERTICAL_SCROLLBAR_AS_NEEDED,jp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jp.getViewport().add(ta);
p2.add(jp);
contentPane.add(BorderLayout.CENTER,p2);
this.setSize(300,400);
this.setTitle("苦中乐制作 10月19日中午 在北京中关村上地");
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

// TODO Auto-generated constructor stub
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Note();

}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==exit)
{
System.exit(0);
}
if(e.getSource()==open){
FileDialog fd=new FileDialog(this, "open", FileDialog.LOAD);
fd.setVisible(true);
try {
File f=new File(fd.getDirectory(),fd.getFile());

BufferedReader br=new BufferedReader(new FileReader(f));
String s="";
try {
while((s=br.readLine())!=null){


ta.append(s+'\n');
}
br.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}
if(e.getSource()==save){
FileDialog fd=new FileDialog(this,"save",FileDialog.SAVE);
fd.setVisible(true);
try{
File f=new File(fd.getDirectory(),fd.getFile());

BufferedWriter bw=new BufferedWriter(new FileWriter(f));
bw.write(ta.getText());
bw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}

}


----------------解决方案--------------------------------------------------------
  相关解决方案