Nie wiem co zrobiłem zle, siedze na tym juz kilka godzin i nie potrafie odszukac pomyłki.
-
Dane z pliku wstawiane sa do tablicy dane:
-
Jeśli atrybuut obiektu _status = "Zamknięte" obiekt wstawiany jest do 2giej tablicy dane2[][]
3, Przy okazji okreslam wielkosc tablicy zliczajac przy wczytywaniu do dane[][] ilosc obiektow z atrybutem +status = Zamkniete. if(zlecenia.get(i)._status.equals("Zamknięte")){wielkosc_tabeli++;} -
Obiekt wedruja kolejno do tej tablicy licznik++
wielkosc_tabeli=0; String[][] dane=new String[zlecenia.size()][10]; //wiersze, kolumny for (int i=0;i<zlecenia.size();i++) { for (int j=0;j<9;j++) { dane[i][0]=zlecenia.get(i)._numer; dane[i][1]=zlecenia.get(i)._data_przyjecia; dane[i][2]=zlecenia.get(i)._przyjal; dane[i][3]=zlecenia.get(i)._serwisuje; dane[i][4]=zlecenia.get(i)._data_realizacji; dane[i][5]=zlecenia.get(i)._apteka; dane[i][6]=zlecenia.get(i)._status; dane[i][7]=zlecenia.get(i)._cel; dane[i][8]=zlecenia.get(i)._rozwiazanie; } if(zlecenia.get(i)._status.equals("Zamknięte")){wielkosc_tabeli++;} }
String[][] dane2=new String[wielkosc_tabeli][10];
licznik=0;for (int i=0;i<zlecenia.size();i++)
{
if((dane[i][6]).equals("Zamknięte"))
{
for (int j=0;j<9;j++)
{
dane2[licznik][j]=dane[i][j];
}
licznik++;
}
}
I tu niby wszystko działa (tak mi sie wydaje) Poznije sa wyswietlane w tabelce:
String[]nag={"Nr:","Data przyjęcia:","Przyjął","Serwisuje","Data realizacji","Apteka:","Status:","Cel:","Rozwiązanie:"};
JTable table = new JTable();
ModelTabelki model = new ModelTabelki( dane2, nag );
table = new JTable(model);
js = new JScrollPane( table );
I to wszystko tez działa. Problem zaczyna sie gdy chce osiagnac cos takiego. Klikam myszka na wiersz w tebelce ( tez w wyswietlonymi obiektami z atrybutem = zamkniete) i chce aby zadała sie pytanie czy przywrocic zlecnie. Jesli tak to zmienia wartowsc atrybutu w obiekcie zaznaczonym myszka (Czyli w wierszu na "Zakończone").
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();
String tymczasowa=zlecenia.get(index_do_edycji)._numer;
//---------------------------------------------------------
if (JOptionPane.showConfirmDialog(new JFrame(),"Czy przywrócić zlecenie?", "Title",JOptionPane.YES_NO_OPTION)
== JOptionPane.YES_OPTION)
{
for (int i=0;i<zlecenia.size();i++)
{
if(zlecenia.get(i)._numer.equals(tymczasowa))
{
zlecenia.get(i)._status="Zakończone";
}
}
//zapis
if(EmployeeListDecorator4.saveList(zlecenia, fileName_zlecenia))
{System.out.println("Zapisalem liste pracownikow...");}
else {System.out.println("Nie udalo sie zapisac listy pracownikow.");return;}
}
I niby wszystko działa do czasu. Okazuje się ze zmienia wartości tych atrybutów ale w innych wierszach niż powinien. Mysle ze pomyliłem cos z przekazaniem zazaczonego wiersza:
JTable tabela=(JTable)(e.getSource()); //obiera numer wiersza przy kliknięciu
index_do_edycji=tabela.getSelectedRow();
String tymczasowa=zlecenia.get(index_do_edycji)._numer;
I potem mamy wyszukiwanie
for (int i=0;i<zlecenia.size();i++)
{
if(zlecenia.get(i)._numer.equals(tymczasowa))
{
zlecenia.get(i)._status="Zakończone";
}
}
I nie mam pojecia dlaczego to nie działa ;/ Pomocy może ktoś mnie uświadomi ;)