Ismét ezzel táblázatos gyakorló projektemmel van gond, 2 napja próbálkozok mindennel IS, többször újraírtam a kérdéses részt, de nem akarja az igazat
Van 1 textfield, ahova vonalkód olvasóval lehet bevinni az adatokat, a vonalkód olvasó az olvasás után ENTER-t "üt".
A kód szépen megtalálja, végrehajtja a megfelelő utasításokat a saját gépemen amin írom (i7 3.7Ghz + 12GB ram). A probléma akkor következik, mikor egy lassú pentiumos laptopon futtatom, hibajelenség:
- 5x olvastam le ugyanazt a kódot egymás után, és össze vissza dobál ✔-t és ✖-et ovlasás után.
- sokszor elkezd ugrálni a táblázatban még azelőtt mielőtt érkezne az Enter... (nincs más key event hozzárendelve)
Mivel teljesen random viselkedik ugyanazon vonalkód esetében is már csak arra tudtam gondolni, hogy "túl" gyors neki az olvasás, vagy nem elég hatékony a kódom, más logikus magyarázatot nem találtam..
De hátha ti jobban átlátjátok
Az Enter után keresem ki, hogy melyik áruról van szó:
private void text_searchKeyReleased(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
indextalalat = -2;
zText.setLength(0); //Stringbuildert használok, hogy megmaradjon az utolsó érték a field ürítése után is.
zText.append(text_search.getText());
for (int i = 0; i <= tabla.getRowCount()-1; i++) {
if (tabla.getValueAt(i, 2).toString().replaceAll("\\s+","").equals(text_search.getText())) {
indextalalat = i;
break;
}
}
if (indextalalat != -2) {
text_search.setText(null);
talalatLabel0.setText("✔");
tabla.setRowSelectionInterval(indextalalat, indextalalat);
tabla.scrollRectToVisible(new Rectangle(tabla2.getCellRect(indextalalat, 0, true)));
setTexts();
} else {
text_search.setText(null);
talalatLabel0.setText("✖");
tabla.removeColumnSelectionInterval(0, tabla.getColumnCount()-1);
}
}
}