Problem z odświezaniem danych w tabeli.

0

Mam taki kod:

package firma3;

import java.awt.;
import java.awt.event.
;
import java.util.;
import javax.swing.
;
import java.io.FileReader;

public class Okno_personel extends JFrame implements ActionListener,WindowListener
{
JTextField pole_pracownik=new JTextField(10);
JLabel napis_pracownik=new JLabel("Dodaj pracownika:");
String napis_pracownik_string="";
//_Listy----------------------------------------------------------------------
final String fileName = "E:/Firma3/pracownik.txt";
ArrayList <pracownik> personnel = new ArrayList<pracownik>();
//-Przyciski------------------------------------------------------------------
JButton wyswietl_pracownikow = new JButton();
JButton usun_pracownikow = new JButton("usuń");
JButton dodaj_pracownikow = new JButton();
//---------------------- sortowanie -------------------------------------------
class SortujWgImienia implements Comparator<pracownik>
{
public int compare(Pracownik o1, Pracownik o2)
{return o1._imie.compareTo(o2._imie);}
}
//---------------------- koniec sortowania ------------------------------------
public Okno_personel()
{
super("Personel:");
//-------------------- sortowanie ---------------------------------------------
Collections.sort(personnel,new SortujWgImienia());
for(Pracownik dos:personnel ) System.out.println(dos._imie);
//-Przyciski---------------------- ------------------------------------------
usun_pracownikow.setToolTipText("Kliknij aby usunąć pracownika");
usun_pracownikow.addActionListener(this);
dodaj_pracownikow.setToolTipText("Kliknij aby dodać pracownika");
dodaj_pracownikow.addActionListener(this);
wyswietl_pracownikow.setToolTipText("Kliknij aby wyświetlić liste pracownika");
wyswietl_pracownikow.addActionListener(this);
personnel = new ArrayList<pracownik>(EmployeeListDecorator.readList(fileName));
setSize(500,250);

String[][] dane=new String[personnel.size()][2];
for (int i=0;i<personnel.size();i++)
for (int j=0;j<1;j++)
dane[i][j]=personnel.get(i)._imie;

String[] kolumny={"Imie Nazwisko:"};
JTable table=new JTable(dane,kolumny);
table.setCellSelectionEnabled(true);
JScrollPane sp=new JScrollPane(table);

JPanel panel=new JPanel();
panel.setLayout(new GridLayout(4, 4)); // 4 wierszy 5 kolumn
panel.add(wyswietl_pracownikow);
panel.add(usun_pracownikow);
panel.add(dodaj_pracownikow);
panel.add(napis_pracownik);
panel.add(pole_pracownik);
panel.add(sp);

add(sp,BorderLayout.CENTER);
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
add(panel,BorderLayout.NORTH);
setVisible(true);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent evt)
{
Object zrodlo2 = evt.getSource();
if(zrodlo2==dodaj_pracownikow)
{
try{
//wczytanie
personnel = new ArrayList<pracownik>(EmployeeListDecorator.readList(fileName));
//dodanie
personnel.add(new Pracownik(pole_pracownik.getText()));
//usuniecie wpisow null i pustych
for(int i=0; i<personnel.size(); i++)
{
if(personnel.get(i)._imie.equals("")){personnel.remove(i);} // Usowa wpisy puste ;)
}
for(int i=0; i<personnel.size(); i++)
{
if(personnel.get(i)._imie.equals("null")){personnel.remove(i);} // Usowa wpisy null ;)
}
napis_pracownik_string="";
//sortowanie
Collections.sort(personnel,new SortujWgImienia());
for(Pracownik dos:personnel ) System.out.println(dos._imie);
//wyswietl
if(personnel == null){System.out.println("Nie ma listy pracownikow");}
else { for (Pracownik employee : personnel) {System.out.println(employee.toString());}}
//zapis
if(EmployeeListDecorator.saveList(personnel, fileName))
{System.out.println("Zapisalem liste pracownikow...");}
else {System.out.println("Nie udalo sie zapisac listy pracownikow.");return;}
//---------------------------------------------------------------------------
}
catch(Exception e)
{
System.out.println("Błąd wejścia/wyjścia.");
}
}
//---------------------------------------------------------------------------
if(zrodlo2==wyswietl_pracownikow)
{
try
{
//wczytywanie
personnel = new ArrayList<pracownik>(EmployeeListDecorator.readList(fileName));
//wyswietlanie
if(personnel == null){System.out.println("Nie ma listy pracownikow");}
else { for (Pracownik employee : personnel) {System.out.println(employee.toString());}}
}
catch(Exception e)
{
System.out.println("Błąd wejścia/wyjścia.");
}
}
//----------------------------------------------------------------------------
if(zrodlo2==usun_pracownikow)
{
try{
//wczytanie
personnel = new ArrayList<pracownik>(EmployeeListDecorator.readList(fileName));
//wyszukanie i usowanie
String pracownik_do_usuniecia=pole_pracownik.getText();
for(int i=0; i<personnel.size(); i++) //Usowa wpisy pracownikow
{if(personnel.get(i)._imie.equals(pracownik_do_usuniecia)){personnel.remove(i);} }
for(int i=0; i<personnel.size(); i++) //Usowa wpisy pracownikow
{
if(personnel.get(i)._imie.equals("")){personnel.remove(i);} // Usowa wpisy puste ;)
}
for(int i=0; i<personnel.size(); i++) //Usowa wpisy pracownikow
{
if(personnel.get(i)._imie.equals("null")){personnel.remove(i);} // Usowa wpisy null ;)
}
//sortowanie
System.out.println("----------------------------------------");
Collections.sort(personnel,new SortujWgImienia());
for(Pracownik dos:personnel ) System.out.println(dos._imie);
//wyswietl
if(personnel == null){System.out.println("Nie ma listy pracownikow");}
else { for (Pracownik employee : personnel) {System.out.println(employee.toString());}}
//zapis
if(EmployeeListDecorator.saveList(personnel, fileName))
{System.out.println("Zapisalem liste pracownikow...");}
else {System.out.println("Nie udalo sie zapisac listy pracownikow.");return;}
}
catch(Exception e)
{
System.out.println("Błąd wejścia/wyjścia.");
}
}
}
//-------------------- Koniec Akcji ------------------------------------------
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e)
{
pole_pracownik.setText("");
napis_pracownik.setText(napis_pracownik_string);
}
public void windowDeactivated(WindowEvent e) { }

}


W czym problem ;) Chodzi o to że dy dodaje sobie nowego pracownika on owszem dodaje się do array listy zapisuje się w pliku i sortuje Niby wszystko cacy. Niestety nie odświeża mi się okno. Owszem jak wyłącze i włącze od nowa to widać wszystko elegancko( czyli nowo dodany rekord(pracownik))
Jednak chciałbym ady okno i tabelka odświezała sie zaraz po dodaniu pracownika.
Męczę sie z tym juz 2gi dzień i nie potrafie Może wskażcie mi drogę Dzięki.

0

Poczytaj o metodach fireTable....() w klasie AbstractTableModel.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0