Re: Reading a Random Access File
<http://www.java2s.com/Code/Java/Swing-JFC/AtreemodelusingtheSortTreeModelwithaFilehierarchyasinput.htm>
package computerdatabase;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class Tree extends JFrame
{
private static final long serialVersionUID = 1L;
JTree tree;
public Tree()
{
super("Computer Database");
setSize(300, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
tree = new JTree(initModel());
getContentPane().add(new JScrollPane(tree));
}
public static void main(String args[])
{
initDB();
Tree dbTree = new Tree();
dbTree.setVisible(true);
}
private static void initDB()
{
ComputerDatabase dbOut = new ComputerDatabase();
dbOut.database.put("Classroom 101", new ArrayList<String>());
dbOut.database.get("Classroom 101").add("#abc101");
dbOut.database.get("Classroom 101").add("#abc102");
dbOut.database.get("Classroom 101").add("#abc103");
dbOut.database.get("Classroom 101").add("#abc104");
dbOut.database.get("Classroom 101").add("#abc105");
FileOutputStream fos;
try
{
fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dbOut);
oos.close();
fos.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
private static DefaultTreeModel initModel()
{
DefaultTreeModel model = null;
FileInputStream fis;
try
{
fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
ComputerDatabase dbIn = new ComputerDatabase();
dbIn = (ComputerDatabase) ois.readObject();
ois.close();
fis.close();
model = new DefaultTreeModel(new DefaultMutableTreeNode(
"Rooms", true), true);
for (String rms : dbIn.database.keySet())
{
DefaultMutableTreeNode temp =
new DefaultMutableTreeNode(rms, true);
((DefaultMutableTreeNode) model.getRoot()).add(temp);
for (String cmp : dbIn.database.get(rms))
{
((DefaultMutableTreeNode) model.getChild(model.getRoot(), 0))
.add(new DefaultMutableTreeNode(cmp, false));
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
return model;
}
static public class ComputerDatabase implements Serializable
{
private static final long serialVersionUID = 1L;
public HashMap<String, ArrayList<String>> database =
new HashMap<String, ArrayList<String>>();
}
}