下面这个程序实现了一个简单的GUI视图,模拟一个记事本软件。
问题是这样的:我知道这个软件是打不开媒体文件的,因为用到的是字符读取流,并且也无法解码媒体;
但是,我们还是可以用记事本打开一个媒体文件的,当然显示乱码。是的。。这个模拟程序在打开图片里也会显
示乱码,可是它却是一直在输出乱码,好像一个死循环。大家可以试着运行打开一个图片。。请高手指教出现这种情况的原因。。。
这是我写的代码:
package babynotebook;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenuDemo
{
private Frame f;
private MenuBar bar;
private Menu fileMenu,m2;
private MenuItem mi,mi1,mi2,mi3,mi4;
private FileDialog openDia,saveDia;
private TextArea ta;
private File file;
MyMenuDemo()
{
init();
}
private void init()
{
f = new Frame("属于你的日记本。。。");
ta = new TextArea();
openDia = new FileDialog(f,"亲想打开哪段啊?",FileDialog.LOAD);
saveDia = new FileDialog(f,"亲写完了?",FileDialog.SAVE);
bar = new MenuBar();
fileMenu = new Menu("文件");
m2 = new Menu("新建");
mi1 = new MenuItem("文本文件");
mi2 = new MenuItem("打开");
mi3 = new MenuItem("保存");
mi4 = new MenuItem("另存为");
mi = new MenuItem("退出");
f.setBounds(15,70,600,600);
f.setMenuBar(bar);
//f.setLayout(new FlowLayout());
f.setVisible(true);
bar.add(fileMenu);
fileMenu.add(m2);
m2.add(mi1);
fileMenu.add(mi2);
fileMenu.add(mi3);
fileMenu.add(mi4);
fileMenu.add(mi);
f.add(ta);
myEvent();
}
private void myEvent()
{
mi2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
if(dirPath==null||fileName==null)
return;
ta.setText("");
file = new File(dirPath,fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bufr.close();
}
catch(IOException e1)
{
throw new RuntimeException("读取失败!");
}
}
});
mi3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if(dirPath==null||fileName==null)
return;
file = new File(dirPath,fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();
bufw.write(text);
bufw.close();
}
catch(IOException e2)
{
throw new RuntimeException("保存失败!");
}
}
});
mi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuDemo();
}
} |
|