Kolejny problem z odswierzaniem tabelki

0

Poprzednio pytałem jak zrobić sortowania w tabelce... i doczekalem się odpowiedzi ;) Za co dzieki
Jednka przerobiłem swój program i pojawił sie nowy problem czyli odwierzanie tabelki po dodaniu wiersza. Poprzednio w Abstract table mode nie było to trudne bo wystarczyło uzyc

table.setModel(new ModelTabelki(dane,nag));

A teraz nie moge sobie poradzić Oto kod:

package CRM;
import CRM.EmployeeListDecorator;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.io.FileReader;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
//------------------------------------------------------------------------------
public class Okno_personel extends JFrame implements ActionListener,WindowListener
{
 int index_do_usuniecia,index_do_edycji;
 //-----------------------------------------------------------------------------
 JPanel panel = new JPanel();
 JTable table = new JTable();
 JScrollPane js = new JScrollPane();
 //-----------------------------------------------------------------------------
 JTextArea pole_pracownik=new JTextArea();
 JLabel napis_pracownik=new JLabel("Dodaj pracownika:");                          
 String napis_pracownik_string="";
 JTextArea pole_haslo=new JTextArea();
 JLabel napis_haslo=new JLabel("Podaj hasło:");
 String napis_haslo_string="";
 //_Listy-----------------------------------------------------------------------
 final String fileName = "C:/CRM/bazy/pracownik.txt";
 ArrayList <Pracownik> personnel = new ArrayList<Pracownik>();
 //-Przyciski-------------------------------------------------------------------
 JButton dodaj_pracownikow = new JButton(new ImageIcon("C:/CRM/jpg/plus.jpg"));
 JButton usun_pracownikow = new JButton(new ImageIcon("C:/CRM/jpg/minus.jpg"));
 //---------------------- sortowanie deklaracja --------------------------------
  class SortujWgImienia implements Comparator<Pracownik>
        {
        public int compare(Pracownik o1, Pracownik o2)
                  {return o1._imie.compareTo(o2._imie);}
        }
 //-----------------------------------------------------------------------------
  public Okno_personel()
  {
      final JFrame frame = new JFrame("Personel");
      //------------------------------------------------------------------------
      personnel = new ArrayList<Pracownik>(EmployeeListDecorator.readList(fileName));
      String[][] dane=new String[personnel.size()][3];
      for (int i=0;i<personnel.size();i++)
          for (int j=0;j<3;j++)
            {
            dane[i][0]=personnel.get(i)._imie;
            dane[i][1]=personnel.get(i)._haslo;
            }
      //------------------------------------------------------------------------
      String[] nag={"Imie Nazwisko:","Hasło:"};
      //------------------------------------------------------------------------
      TableModel model = new DefaultTableModel(dane, nag)
                            {
                             public Class getColumnClass(int column)
                                {
                                 Class returnValue;
                                 if ((column >= 0) && (column < getColumnCount()))
                                    {returnValue = getValueAt(0, column).getClass();}
                                 else {returnValue = Object.class; }
                                 return returnValue;
                                }
                             };
     //-------------------------------------------------------------------------
     table = new JTable(model);
     //-------------------------------------------------------------------------
     final RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
     table.setRowSorter(sorter);
     js = new JScrollPane(table);
     js.setBounds(10, 100, 460, 180);
     panel.add(js);
     //-Przyciski---------------------- ----------------------------------------
     usun_pracownikow.setToolTipText("Kliknij aby usunąć pracownika");
     usun_pracownikow.addActionListener(this);
     usun_pracownikow.setBounds(70, 30, 50, 50);
     dodaj_pracownikow.setToolTipText("Kliknij aby dodać pracownika");
     dodaj_pracownikow.addActionListener(this);
     dodaj_pracownikow.setBounds(10, 30, 50, 50);
     panel.add(dodaj_pracownikow);
     panel.add(pole_pracownik);
     napis_pracownik.setBounds(150,10,200,20);
     pole_pracownik.setBounds(150,30,200,18);
     pole_pracownik.setLineWrap(true);                                                  //<--- zawijanei tekstu ;)
     napis_haslo.setBounds(150,50,200,20);
     pole_haslo.setBounds(150,70,200,18);
     pole_haslo.setLineWrap(true);                                                  //<--- zawijanei tekstu ;)
     panel.add(pole_haslo);
     panel.add(napis_haslo);
     panel.add(usun_pracownikow);
     panel.add(pole_pracownik);
     panel.add(napis_pracownik);
     //-------------------------------------------------------------------------
     table.addMouseListener(new MouseAdapter()
            {
           public void mouseClicked(final MouseEvent e)
                {
                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2)
                    {
                     JTable tabela=(JTable)(e.getSource());                                             //obiera numer wiersza przy kliknięciu
                     index_do_edycji=tabela.getSelectedRow();
                     Okno_personel_edycja personel_edycja= new Okno_personel_edycja(index_do_edycji);
                     frame.setVisible(false);
                    }                                                                                  // kliknieto 2x lewym przyciskiem myszki!
                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1)
                    {
                     JTable tabela=(JTable)(e.getSource());                                            //obiera numer wiersza przy kliknięciu
                     index_do_usuniecia=tabela.getSelectedRow();
                     //-------- do wyswietlaniu w polach------------------------
                     personnel = new ArrayList<Pracownik>(EmployeeListDecorator.readList(fileName));
                     pole_pracownik.setText(personnel.get(index_do_usuniecia)._imie);
                     pole_haslo.setText(personnel.get(index_do_usuniecia)._haslo);
                     //--------- fefresh ---------------------------------------
                     table.setRowSorter(sorter);
                    }
                };
            });
     //-------------------------------------------------------------------------
     frame.setSize(500,330);
     frame.add(panel);
     panel.setLayout(null);
     frame.setLocationRelativeTo(null);                                             
     frame.setVisible(true);
     frame.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().replace("\n"," "),pole_haslo.getText().replace("\n"," ")));
                //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;}
                 // Odświerzanie tabelki ---------------------------------------
                 String[][] dane=new String[personnel.size()][2];
                       for (int i=0;i<personnel.size();i++)
                            for (int j=0;j<2;j++)
                            { dane[i][0]=personnel.get(i)._imie;
                              dane[i][1]=personnel.get(i)._haslo;}
                  <b> table.setModel(new ModelTabelki(dane,nag));</b>
                 //-------------------------------------------------------------

                 }
                 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
         String[][] dane=new String[personnel.size()][3];
         String pracownik_do_usuniecia=personnel.get(index_do_usuniecia)._imie;
         //usowanie
         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;}
        // Odświerzanie tabelki ---------------------------------------
        dane=new String[personnel.size()][2];
             for (int i=0;i<personnel.size();i++)
                 for (int j=0;j<2;j++)
                 { dane[i][0]=personnel.get(i)._imie;
                   dane[i][1]=personnel.get(i)._haslo;}
                   // table.setModel(new ModelTabelki(dane,nag));
        //-------------------------------------------------------------
       }
    catch(Exception e)
      {
       System.out.println("Błąd wejścia/wyjścia.");
      }
    }
  }
    public void windowOpened(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public void windowClosing(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public void windowClosed(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public void windowIconified(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public void windowDeiconified(WindowEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public void windowActivated(WindowEvent e) {

    }
    public void windowDeactivated(WindowEvent e) {}
  }

Odswierzanie ma sie pojawic tam gdzie ten wytłuszczony druk w z poprzedniej tabelki uzywajacej abstract table mode. Prosze o pomoc ;)

0

Nie widac wytłuszczonego
Po nacisnieciu przyciskudodaj_pracownika w miejscu gdize jest odswierzanei tableki z abstract Table mode:

table.setModel(new ModelTabelki(dane,nag));

dzieki za pomoc ;)

0

Nie chce mi sie czytac calego kodu, ale wyglada na to ze po dodaniu wiersza przeladowujesz caly model? Dobrze mysle?

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