Klasa WCZYTYWANIE_PRZY_OTWIERANIU
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class wczytywanie_przy_otwieraniu
{
baza mainWindow = null;
public wczytywanie_przy_otwieraniu(baza mainWindow)
{
this.mainWindow = mainWindow;
try
{
FileInputStream h = new FileInputStream("mojabazajestzapisana.txt");
ObjectInputStream obe = new ObjectInputStream(h);
mainWindow.baza.setModel((DefaultTableModel) obe.readObject());
mainWindow.model.fireTableDataChanged();
h.close();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,ex.getMessage(),"Czytanie pliku "+"mojabazajestzapisana.txt",JOptionPane.INFORMATION_MESSAGE);
}
}
}
KLASA BAZA:
/*
* 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()
{//new wczytywanie_przy_otwieraniu(this);
setTitle("Baza"); //tytuł okna
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);
wczytywanieprzyotwieraniu();
WindowListener sluchacz = new Zamykanie();
addWindowListener(sluchacz);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
// 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)
{
try
{
FileOutputStream f = new FileOutputStream("as.txt");
ObjectOutputStream str = new ObjectOutputStream(f);
str.writeObject(baza.getModel());
str.flush();
f.close();
}
catch(IOException exx)
{
JOptionPane.showMessageDialog(null,exx.getMessage(),"Zapisywanie do pliku "+"as.txt",JOptionPane.INFORMATION_MESSAGE);
}
dispose();
}
}
}
//Wczytywanie danych z pliku przy otwieraniu programu
public void wczytywanieprzyotwieraniu()
{
try
{
FileInputStream f = new FileInputStream("as.txt");
ObjectInputStream ob = new ObjectInputStream(f);
model = (DefaultTableModel) ob.readObject();
baza.setModel(model);
model.fireTableDataChanged();
}
catch(Exception y)
{
JOptionPane.showMessageDialog(null,y.getMessage(),"Czytanie pliku "+"mojabazajestzapisana.txt",JOptionPane.INFORMATION_MESSAGE);
}
}
@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)
{
try
{
int i = 0;
int odpowiedz = chooserzapis.showSaveDialog(this);
if (odpowiedz == chooserzapis.APPROVE_OPTION){
File a = chooserzapis.getSelectedFile();
FileOutputStream f = new FileOutputStream(a+ ".txt");
ObjectOutputStream str = new ObjectOutputStream(f);
str.writeObject(baza.getModel());
str.flush();
f.close();
}
}
catch(IOException zz)
{
JOptionPane.showMessageDialog(rootPane, "Zapis");
}
}
//Wczytanie modelu tabeli z pliku
else if(z==ekspo)
{
try
{
int b = chooserodczyt.showOpenDialog(this);
if (b == chooserodczyt.APPROVE_OPTION) {
a = chooserodczyt.getSelectedFile();
FileInputStream f = new FileInputStream(a);
ObjectInputStream ob = new ObjectInputStream(f);
model = (DefaultTableModel) ob.readObject();
baza.setModel(model);
model.fireTableDataChanged();
}
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,ex.getMessage(),"Czytanie pliku "+a,JOptionPane.INFORMATION_MESSAGE);
}
}
}
new wczytywanie_przy_otwieraniu(this);// linijka jest wrzucona po utworzeniu modelu i tabeli, więc wszystko powinno być w porządku, bo kod obejmuje swoim zasięgiem tabele i model.