你提的问题不是太明确,如果仅从一个先前序列化的文件中读取存储的对象信息,应该不是太复杂。但如果用Applet实现本机上文件的读取,就要注意这个Applet一定要在有数字签名,否则会引发安全性异常,数据也读不出来。
我写了一个示意程序,供你参考,这是个Applet程序,但要注意,这个程序一定要经过数字签名后,才能在自己的计算机上运行,它也是个“两栖”程序,也就是包含一个main方法,所以也可以直接运行这个类文件,你可以试试,代码如下:
public class ObjApplet extends java.applet.Applet{
//用于显示数据项的标签的组件
java.awt.Label lblName=new java.awt.Label("Name:");
java.awt.Label lblAge=new java.awt.Label("Age:");
java.awt.Label lblHeight=new java.awt.Label("Height:");
//状态栏,用于显示读入数据状态或错误信息
java.awt.Label lblStatus=new java.awt.Label("Success Read Data");
//----------------------------------------------------------
//显示各项数据的文本组件
java.awt.TextField txtName=new java.awt.TextField();
java.awt.TextField txtAge=new java.awt.TextField();
java.awt.TextField txtHeight=new java.awt.TextField();
/**
* 构造方法
*/
public ObjApplet(){
init();
}
/**
* Applet在启动时自动调用的方法init
*/
public void init(){
try{
//设置布局管理器
setLayout(new java.awt.BorderLayout());
//建立显示数据的一个面板
java.awt.Panel content=new java.awt.Panel();
content.setLayout(new java.awt.GridLayout(3,2));
//在面板中加入数据显示组件
content.add(lblName);
content.add(txtName);
content.add(lblAge);
content.add(txtAge);
content.add(lblHeight);
content.add(txtHeight);
//将面板加入当前的Applet中
add(content,java.awt.BorderLayout.CENTER);
//在当前的面板中加入状态栏
add(lblStatus,java.awt.BorderLayout.SOUTH);
//读入序列化数据
Man man=readData();
//设置显示组件的信息
txtName.setText(man.name);
txtAge.setText(String.valueOf(man.age));
txtHeight.setText(String.valueOf(man.height));
}catch(Exception e){
//发生异常时,将自动调用这些代码,设置状态栏中的错误信息
lblStatus.setForeground(java.awt.Color.RED);
lblStatus.setText(e.getMessage());
}
}
/**
* 读入硬盘中的数据文件的方法readData
*/
public Man readData(){
try{
//此处是从你原来的生成的文件中读出数据,
//在未经数字签名的Applet中会引发安全异常
FileInputStream fin=new FileInputStream("c:/obj.dat");
ObjectInputStream ois=new ObjectInputStream(fin);
//这是你前面写的类,注意类文件Man.class一定要和当前的
//ObjApplet.class文件位于同一个目录中或jar文件里
Man man=(Man)ois.readObject();
fin.close();
return man;
}catch(Exception e){
throw new RuntimeException(e);
}
}
/**
* 测试方法main,以便察看运行的结果
*/
public static void main(String[] args){
java.awt.Frame frm=new java.awt.Frame("Demo");
frm.addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(java.awt.event.WindowEvent e){
System.exit(-1);
}
});
frm.add(new ObjApplet());
frm.pack();
frm.setVisible(true);
}
}