Problem med ArrayList og at gemme
HejsaJeg har et problem med mit program, som jeg næsten er færdig med nu. Programmet er en filmenliste, hvor jeg kan sætte mine filmen ind.
Selve programet går ud på at jeg kan gemme min filmen i en ArrayListe, og derefter gemme listen i en dat fil. Men der er opstået et problem, jeg kan ikke adde en filmen til listen mere. Jeg adder fra en frame, og gemmer i en anden. Der er også sådan det skal være, men det virker bare ikke mere efter at har implementeret Serializable. I kan se min kode her, og håber derved at i kan se hvad fejlen er:
public class Frame1 extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JButton jButton1 = new JButton();
JTextField jTextField1 = new JTextField();
EgenList engenList = new EgenList();
FilmenListe list = new FilmenListe();
Frame2 frame = new Frame2(this,list);
JPanel jPanel2 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
JTextArea jTextArea1 = new JTextArea();
JButton jButton2 = new JButton();
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenu1 = new JMenu();
JMenu jMenu2 = new JMenu();
JMenu jMenu3 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem4 = new JMenuItem();
JMenuItem jMenuItem5 = new JMenuItem();
JMenu jMenu4 = new JMenu();
JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem7 = new JMenuItem();
JMenu jMenu5 = new JMenu();
JMenuItem jMenuItem3 = new JMenuItem();
JMenuItem jMenuItem8 = new JMenuItem();
JMenuItem jMenuItem9 = new JMenuItem();
JMenuItem jMenuItem10 = new JMenuItem();
JMenuItem jMenuItem11 = new JMenuItem();
JMenuItem jMenuItem12 = new JMenuItem();
JMenuItem jMenuItem15 = new JMenuItem();
JMenuItem jMenuItem16 = new JMenuItem();
ImageIcon icon = new ImageIcon("C:/O0803.gif");
VerticalFlowLayout verticalFlowLayout1 = new VerticalFlowLayout();
JLabel jLabel1 = new JLabel();
JButton jButton3 = new JButton();
StringBuffer buffer = new StringBuffer();
Crontrol crontrol = new Crontrol();
/**
* Constructs a new instance.
*/
public Frame1() {
super();
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* Initializes the state of this instance.
*/
private void jbInit() throws Exception {
this.getContentPane().setLayout(borderLayout1);
this.setSize(new Dimension(477, 385));
jPanel1.setPreferredSize(new Dimension(100, 40));
jPanel1.setBackground(Color.blue);
jPanel1.setLayout(verticalFlowLayout1);
jButton1.setText("Søg");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jTextField1.setPreferredSize(new Dimension(82, 20));
jTextField1.setFont(new Font("Serif", 0, 14));
jPanel2.setPreferredSize(new Dimension(240, 270));
jPanel2.setBackground(Color.blue);
jScrollPane1.setDoubleBuffered(true);
jScrollPane1.setPreferredSize(new Dimension(300, 300));
jTextArea1.setPreferredSize(new Dimension(800, 900));
jTextArea1.setFont(new Font("Serif", 0, 12));
jButton2.setText("Exit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
jMenuBar1.setBackground(new Color(236, 233, 216));
jMenu1.setBackground(new Color(236, 233, 216));
jMenu1.setText("File");
jMenu2.setBackground(new Color(236, 233, 216));
jMenu2.setText("Search");
jMenu3.setBackground(new Color(236, 233, 216));
jMenu3.setText("Help");
jMenuItem1.setText("Help Topics");
jMenuItem4.setText("About");
jMenuItem5.setText("new..");
jMenuItem5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
jMenuItem5_mousePressed(e);
}
});
jMenu4.setText("CodeX");
jMenuItem2.setText("DivX");
jMenuItem2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
jMenuItem2_mousePressed(e);
}
});
jMenuItem7.setText("Xvid");
jMenuItem7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
jMenuItem7_mousePressed(e);
}
});
jMenu5.setText("Typpe");
jMenuItem3.setText("Krimi");
jMenuItem8.setText("Action");
jMenuItem9.setText("Humor");
jMenuItem10.setText("Kærlighed");
jMenuItem11.setText("krig");
jMenuItem12.setText("Eventyr");
jMenuItem15.setText("Add Filmen");
jMenuItem15.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
jMenuItem15_mousePressed(e);
}
});
jMenuItem16.setText("Exit");
jLabel1.setPreferredSize(new Dimension(90, 10));
jLabel1.setEnabled(false);
jButton3.setText("Print Liste");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton3_actionPerformed(e);
}
});
this.getContentPane().add(jPanel1, BorderLayout.WEST);
jPanel1.add(jLabel1, null);
jPanel1.add(jTextField1, null);
jPanel1.add(jButton1, null);
jPanel1.add(jButton3, null);
jPanel1.add(jButton2, null);
this.getContentPane().add(jPanel2, BorderLayout.CENTER);
jPanel2.add(jScrollPane1, null);
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu2);
jMenuBar1.add(jMenu3);
jMenu3.add(jMenuItem1);
jMenu3.add(jMenuItem4);
jMenu2.add(jMenu4);
jMenu2.add(jMenu5);
jMenu1.add(jMenuItem5);
jMenu1.add(jMenuItem15);
jMenu1.add(jMenuItem16);
jMenu4.add(jMenuItem2);
jMenu4.add(jMenuItem7);
jMenu5.add(jMenuItem3);
jMenu5.add(jMenuItem8);
jMenu5.add(jMenuItem9);
jMenu5.add(jMenuItem10);
jMenu5.add(jMenuItem11);
jMenu5.add(jMenuItem12);
jScrollPane1.getViewport().add(jTextArea1, null);
jScrollPane1.getViewport();
this.setJMenuBar(jMenuBar1);
this.setResizable(false);
this.setBackground(Color.blue);
this.setTitle("Filmen Liste");
}
void jButton1_actionPerformed(ActionEvent e)
{
this.readFile();
Collections.sort(list, new CodexComparator());
Object tal = list.findTyppe(jTextField1.getText());
//System.out.println(tal.toString());
String text = tal.toString();
String text1 = jTextField1.getText();
if(text.indexOf(text1)>-1)
{
jTextArea1.setText(tal.toString());
}
else
{
jTextArea1.setText(jTextField1.getText()+" "+":findes ikke i listen");
}
}
public void writeToFile()
{
try
{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("fl.dat"));
out.writeObject(list);
}
catch(IOException ioe)
{
System.out.println(ioe);
}
}
public void readFile()
{
try
{
ObjectInputStream in = new ObjectInputStream(new FileInputStream("fl.dat"));
list =(FilmenListe) in.readObject();
}
catch(IOException ioe)
{
System.out.println(ioe);
}
catch(ClassNotFoundException cnfe)
{
System.out.println(cnfe);
}
}
void jButton2_actionPerformed(ActionEvent e)
{
this.writeToFile();
System.exit(0);
}
void jMenuItem5_mousePressed(MouseEvent e)
{
engenList.setVisible(true);
}
void jMenuItem15_mousePressed(MouseEvent e)
{
frame.show();
}
void jButton3_actionPerformed(ActionEvent e)
{
this.readFile();
for(int i=0;i<list.size();i++)
{
buffer.append(((Filmen)(list.get(i))));
jTextArea1.setText(buffer.toString());
}
}
void jMenuItem2_mousePressed(MouseEvent e)
{
this.readFile();
Collections.sort(list,new CodexComparator());
Object tal = list.findCodex("DivX");
String text = tal.toString();
String text1 = jTextField1.getText();
if(text.indexOf(text1)>-1)
{
jTextArea1.setText(tal.toString());
}
else
{
jTextArea1.setText(jTextField1.getText()+" "+":findes ikke i listen");
}
}
void jMenuItem7_mousePressed(MouseEvent e)
{
this.readFile();
Collections.sort(list,new CodexComparator());
Object tal = list.findCodex("Xvid");
String text = tal.toString();
String text1 = jTextField1.getText();
if(text.indexOf(text1)>-1)
{
jTextArea1.setText(tal.toString());
}
else
{
jTextArea1.setText(jTextField1.getText()+" "+":findes ikke i listen");
}
}
}
-------------------------
public class Frame2 extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
FilmenListe list;
Crontrol crontrol = new Crontrol();
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JTextField jTextField3 = new JTextField();
JButton jButton1 = new JButton();
/**
* Constructs a new instance.
*/
public Frame2(Frame1 f,FilmenListe list ) {
try
{
this.list =list;
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* Initializes the state of this instance.
*/
private void jbInit() throws Exception {
this.getContentPane().setLayout(borderLayout1);
this.setResizable(false);
this.setSize(new Dimension(362, 79));
jPanel1.setBackground(Color.blue);
jTextField1.setPreferredSize(new Dimension(63, 20));
jTextField1.setText("Titel");
jTextField2.setPreferredSize(new Dimension(63, 20));
jTextField2.setText("CodeX");
jTextField3.setPreferredSize(new Dimension(63, 20));
jTextField3.setText("Typpe");
jButton1.setText("Add en Filmen");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jTextField1, null);
jPanel1.add(jTextField2, null);
jPanel1.add(jTextField3, null);
jPanel1.add(jButton1, null);
}
void jButton1_actionPerformed(ActionEvent e)
{
String a = jTextField1.getText();
String b = jTextField2.getText();
String c = jTextField3.getText();
list.add(new Filmen(a,b,c));
}
--------------------
public class Filmen implements Serializable {
private String titel;
private String codex;
private String typpe;
public Filmen(String titel, String codex, String typpe)
{
this.titel = titel;
this.codex = codex;
this.typpe = typpe;
}
public String gettitel()
{
return titel;
}
public String getCodex()
{
return codex;
}
public String getTyppe()
{
return typpe;
}
public String toString()
{
return ("Titel:"+titel+"\n"+"Codex:"+codex+"\n"+"Typpe:"+typpe+"\n"+"\n");
}
}
-------------------------------------
public class FilmenListe extends ArrayList implements Serializable {
/**
* Constructor
*/
public StringBuffer findTitel(String titel)
{
StringBuffer buffer = new StringBuffer();
Filmen filmen;
for (int i = 0; i < size(); i++)
{
filmen = (Filmen)get(i);
if(filmen.gettitel().equalsIgnoreCase(titel)) buffer.append(filmen);
}
return buffer;
}
public StringBuffer findCodex(String codex)
{
StringBuffer buffer = new StringBuffer();
Filmen filmen;
for (int i = 0; i < size(); i++)
{
filmen = (Filmen)get(i);
if(filmen.getCodex().equalsIgnoreCase(codex)) buffer.append(filmen);
}
return buffer;
}
public StringBuffer findTyppe(String typpe)
{
StringBuffer buffer = new StringBuffer();
Filmen filmen;
for (int i = 0; i < size(); i++)
{
filmen =(Filmen)get(i);
if(filmen.getTyppe().equalsIgnoreCase(typpe)) buffer.append(filmen);
}
return buffer;
}
}
Håber at der er en der gider bruge sin tid, på mit problem. :-0
