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 ;)