Problem z filtrowaniem ;/

0

Ostatnie pytanie:

public class Okno_personel extends JFrame implements ActionListener,WindowListener
{
String[] nag={"Imie Nazwisko:","Hasło:"};
final JFrame frame = new JFrame("Personel");
//-----------------------------------------------------------------------------
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="";
final JTextField filtr = new JTextField("");
//_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"));
JButton update = new JButton(new ImageIcon("C:/CRM/jpg/vka.jpg"));
JButton filtruj = new JButton("Filtr");
//---------------------- sortowanie deklaracja --------------------------------
class SortujWgImienia implements Comparator<Pracownik>
{
public int compare(Pracownik o1, Pracownik o2)
{return o1._imie.compareTo(o2._imie);}
}
//-----------------------------------------------------------------------------
public Okno_personel()
{
personnel = new ArrayList<Pracownik>(EmployeeListDecorator.readList(fileName));
final 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;
}

  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 TableRowSorter<TableModel> sorter =new TableRowSorter<TableModel>(model);
 table.setRowSorter(sorter);
 js = new JScrollPane(table);
 js.setBounds(10, 140, 460, 150);
 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);
 update.setToolTipText("Kliknij aby aktualizować dane");
 update.addActionListener(this);
 update.setBounds(130, 30, 50, 50);
 filtruj.setBounds(161,120,60,18);
 panel.add(filtruj);
 //- komponenty ------------------------------------------------------------
 panel.add(dodaj_pracownikow);
 panel.add(pole_pracownik);
 napis_pracownik.setBounds(220,10,200,20);
 pole_pracownik.setBounds(220,30,200,18);
 pole_pracownik.setLineWrap(true);                                                 
 napis_haslo.setBounds(220,50,200,20);
 pole_haslo.setBounds(220,70,200,18);
 pole_haslo.setLineWrap(true);
 filtr.setBounds(10,120,150,18);
 panel.add(filtr);
 panel.add(pole_haslo);
 panel.add(napis_haslo);
 panel.add(usun_pracownikow);
 panel.add(pole_pracownik);
 panel.add(napis_pracownik);
 panel.add(update);

//------------------------------------------------------------------------------
table.addMouseListener(new MouseAdapter()
{
public void mouseClicked(final MouseEvent e)
{
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1)
{
JTable tabela=(JTable)(e.getSource());
index_do_usuniecia=tabela.getSelectedRow();
index_do_usuniecia=tabela.convertRowIndexToModel(index_do_usuniecia);
pole_pracownik.setText(personnel.get(index_do_usuniecia)._imie);
pole_haslo.setText(personnel.get(index_do_usuniecia)._haslo);
}
};
});
//-------------------------------------------------------------------------
filtruj.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String text = filtr.getText();
if (text.length() == 0)
{sorter.setRowFilter(null);}
else {
try {
sorter.setRowFilter(
RowFilter.regexFilter(text));
}
catch (PatternSyntaxException pse) {System.err.println("Bad regex pattern");}
}
}
});
//----------------------------------------------------------------------
frame.setSize(500,330);
frame.add(panel);
panel.setLayout(null);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
//-------------------------------------------------------------------------
}
public void actionPerformed(ActionEvent evt){
Object zrodlo2 = evt.getSource();
if(zrodlo2==dodaj_pracownikow)
{
try{
personnel = new ArrayList<Pracownik>(EmployeeListDecorator.readList(fileName));
personnel.add(new Pracownik(pole_pracownik.getText().replace("\n","
"),pole_haslo.getText().replace("\n"," ")));

             //sortowanie
             Collections.sort(personnel,new SortujWgImienia());
             for(Pracownik dos:personnel ) System.out.println(dos._imie);
             //zapis
             EmployeeListDecorator.saveList(personnel, fileName);
             // Odświerzanie danych ---------------------------------------
             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;}
             //Aktualizowanie tabelki --------------------------------------
              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;
                            }
                         };
             RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
             table.setRowSorter(sorter);
             table.setModel(model);
             }
         catch(Exception e){ System.out.println("Błąd wejścia/wyjścia.");}
        }

//-----------------------------------------------------------------------------
}
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) { }
public void windowDeactivated(WindowEvent e) { }}

Problemem jest filtrowanie. Dizała poprawnie gdy wyświetla się tabelka, gdy sortuje. Problem zaczyna sie gdy dodam nowy wiersz. (Przycisk dodaj_pracownika). Po dodaniu nowego wiersza filtr przestaje działać. Zaczyna dopierow po ponownym odpaleniiu programu. Nie moge się dopatrzeć dlaczego. Proszę o pomoc

0

Miszczu, wez no przeczytaj tutorial a nie zadawaj pytan do wszystkiego czego dotykasz. Jest naprawde dobry. Wyszukaj na google.com "how to use tables java", pierwszy link to wlasnie to czego chcesz.

0

@up, dzięki. Wyraziłeś moje odczucia w grzecznej postaci.

0

Myślałem że po to jest forum. Nikt nie zmusza Cie do odpowiadania...

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