Mam taki problem: Mam tabele jTable w swoim JFrame gdzie do tabeli sa dodawane towary i w tej tabeli mam kolumne np ilosc i kolumnę np wartoscNetto i teraz chce aby gdy wpisze recznie ilosc i klikne jeden raz obojetnie gdzie badz wcisne Tab, oczywiscie w obrebie jFrame to zmienie mi sie wartoscNetto. Słyszałem ze to moze byc cos z funkcja FocusLost. Ponizej wycinek kodu który działa ale trzeba klikać niestety dwa razy a jak dwa razy to i Tab nie działa. Mysle ze jasno wytłumaczyłem.
private void jTableTowarFocusLost(java.awt.event.FocusEvent evt) {
// wyliczenie wartości brutto
double wart = Double.parseDouble(jTableTowar.getValueAt(count-1, 3).toString())* Double.parseDouble(jTableTowar.getValueAt(count-1, 5).toString());
jTableTowar.setValueAt(wart, count-1, 6);
//pobranie wartości ilości wierszy
int iloscWierszy = jTableTowar.getRowCount();
double wartoscFaktury = 0;
if(iloscWierszy>0){
for (int i = 0; i<iloscWierszy; i++){
//obliczanie sumy faktury
wartoscFaktury = wartoscFaktury + Double.parseDouble(jTableTowar.getValueAt(i, 6).toString());
//ilość zakupionego towaru na fakturze
int ilosc = Integer.parseInt(jTableTowar.getValueAt(i, 3).toString());
array = new ArrayList<Object>();
try {
usrList = (ListObject) XmlManagement.read ("Towar.xml");
array = (ArrayList<Object>)usrList.getList();
for (int j = 0; j<array.size(); j++){
Towar t = (Towar)array.get(j);
if(Integer.parseInt(jTableTowar.getValueAt(i, 0).toString())==t.getNrTowaru()){
if(ilosc>t.getIloscTowaru()){
JOptionPane.showMessageDialog(null, "Stan magazynowy towaru '"+t.getNazwaTowaru()+"' to: "+t.getIloscTowaru());
jTableTowar.setValueAt(t.getIloscTowaru(),i, 3);
}
if(t.getIloscTowaru()-ilosc>0){
t.setIloscTowaru(t.getIloscTowaru()-ilosc);
}
}
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
jTextFieldWartoscFaktury.setText(""+round.format(wartoscFaktury));
}
}