Witam, Powiązałem przez referencję zapis programu do pliku z klasą baza, ale podkreśla mi że jest niekompatybilna klasa.. Domyślam się, że jest to spowodowane tym, że nie wywołuje tego w oknie głównym:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package wypozyczalnia_filmow;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import javax.swing.JOptionPane;
/**
*
* @author Marek
*/
public class zapisz_program extends baza {
baza mainWindow = null;
public zapisz_program(baza mainWindow)
{
this.mainWindow = mainWindow;
try
{
FileOutputStream f = new FileOutputStream("bazadmina.txt");
ObjectOutputStream str = new ObjectOutputStream(f);
str.writeObject( mainWindow.baza.getModel());
str.flush();
f.close();
}
catch(IOException exx)
{
JOptionPane.showMessageDialog(null,exx.getMessage(),"Zapisywanie do pliku "+"bazadmina.txt",JOptionPane.INFORMATION_MESSAGE);
}
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package wypozyczalnia_filmow;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
class baza extends JFrame implements ActionListener
{
File a;
JButton dodaj,usun,edytuj,impo,ekspo,wyszukaj;
JTable baza;
Object wiersz[][]; //objektreprezentujący wiersz tabeli
DefaultTableModel model;
JFileChooser chooserzapis= new JFileChooser();
JFileChooser chooserodczyt= new JFileChooser();
public void baza()
{
setTitle("Baza"); //tytuł okna
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
String kolumna[] = {"Tytuł","Czas trwania","Kategoria","Nośnik","Rok premiery","Opis","Obsada","Reżyser"}; // tytuły kolumn tabeli
model = new DefaultTableModel(wiersz, kolumna); //definiowanie modeu tabeli
baza = new JTable(model);
setLayout(new FlowLayout(FlowLayout.CENTER));
JScrollPane js = new JScrollPane(baza,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
js.setPreferredSize(new Dimension(700,700)); // rozmiar obszaru tabeli
new wczytywanie_przy_otwieraniu(this);
dodaj = new JButton("Dodaj");
usun = new JButton("Usuń");
edytuj=new JButton("Edytuj");
impo=new JButton("Importuj");
ekspo=new JButton("Eksportuj");
wyszukaj=new JButton("Wyszukaj");
add(dodaj);
add(usun);
add(edytuj);
add(impo);
add(ekspo);
add(wyszukaj);
add(js);
dodaj.addActionListener(this);
usun.addActionListener(this);
impo.addActionListener(this);
ekspo.addActionListener(this);
baza.setAutoCreateRowSorter(true);
setSize(1000,1000);
setVisible(true);
WindowListener sluchacz = new Zamykanie();
addWindowListener(sluchacz);
}
// Zamykanie okna
class Zamykanie extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
int answer = JOptionPane.showConfirmDialog(null, "Czy na pewno chcesz zamknąć program", "Koniec", JOptionPane.YES_NO_OPTION);
if (answer == JOptionPane.YES_OPTION)
{
new zapisz_program(this);
dispose();
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object z=e.getSource(); // Stworzenie obiektu, który jest źródłem sygnału
if(z==dodaj)
{
formularz_dodawania_filmow y= new formularz_dodawania_filmow(baza.this);
}
else if(z==usun)
{
model = (DefaultTableModel) baza.getModel();
model.removeRow(baza.getSelectedRow());
}
else if(z==edytuj)
{
}
//Zapis tabeli do pliku
else if(z==impo)
{
}
//Wczytanie modelu tabeli z pliku
else if(z==ekspo)
{
}
}
}
W tym miejscu wywołuję klasę zapisz_program, domyślam się, że nie jest to okno główne i na tym polega błąd, ale jak to zmienić?
// Zamykanie okna
class Zamykanie extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
int answer = JOptionPane.showConfirmDialog(null, "Czy na pewno chcesz zamknąć program", "Koniec", JOptionPane.YES_NO_OPTION);
if (answer == JOptionPane.YES_OPTION)
{
new zapisz_program(this);
dispose();
}
}
}