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