- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Apple Watch
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Poco F8 Ultra – forrónaci
- A Legion Y70 (2026)-tal tért vissza a Lenovo
- Szívós, szép és kitartó az új OnePlus óra
- Poco X8 Pro Max - nem kell ide sem bank, sem akkubank
- Honor 200 Pro - mobilportré
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Feltalálta a Google a keresőmotort
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
floatr
veterán
Sziasztok.
Egy Maven projectet próbálok készíteni, ahol a program eredményeit egy json fileba írom és onnan olvasom vissza a korábbiakat.
Ha az
\src\main\resources\results\mappában helyezem el a results.json-t akkor Mavennel futtatva a programot tökéletesen írja és olvassa az adatokat, bemásolja a\target\classes\results\mappába.
A probléma az, hogy egy futtatható .jar-t is készítek ez viszont nem éri el így a filet.Egy megoldás, ha nem a resources-be rakom, viszont ekkor mindkét esetben közvetlen a gyökérbe rakja a jsont, ez így annyira nem tetszik.
Hogyan tudnám pl. simán egy results mappába rakni úgy, hogy mindkét esetben hozzáférjen a program?
Remélem érthető a problémám
-
mobal
nagyúr
Sziasztok.
Egy Maven projectet próbálok készíteni, ahol a program eredményeit egy json fileba írom és onnan olvasom vissza a korábbiakat.
Ha az
\src\main\resources\results\mappában helyezem el a results.json-t akkor Mavennel futtatva a programot tökéletesen írja és olvassa az adatokat, bemásolja a\target\classes\results\mappába.
A probléma az, hogy egy futtatható .jar-t is készítek ez viszont nem éri el így a filet.Egy megoldás, ha nem a resources-be rakom, viszont ekkor mindkét esetben közvetlen a gyökérbe rakja a jsont, ez így annyira nem tetszik.
Hogyan tudnám pl. simán egy results mappába rakni úgy, hogy mindkét esetben hozzáférjen a program?
Remélem érthető a problémám
Bár nem tartozik a témához, de ha nem must a maven válts gradle-ra, tanács.

Menet közben a jar-t nem fogod tudni írni. Onnan olvasni tudsz.
-
Zsoxx
őstag
Ezt tanulmányozva talán kicsit közelebb kerülsz a válaszhoz.
Fent van a megoldása is egyébként. -
M_AND_Ms
veterán
Egy konkrét feladat kapcsán amint érdemes lesz a bővítés, azt azonnal észre fogod venni.
-
Drizzt
nagyúr
Sziasztok!
Valószínűleg elég triviális lesz a kérdésem

2 éve programozok, idén érettségiztem emelt informatikából (Java-ban), alapvetően értem az OOP lényegét, tisztában vagyok az alapokkal, viszont az osztályok közötti öröklődés hasznát nem igazán látom át.
Egy egyszerű példával:
Adott egycarosztály, benne egyString markamező. Ennek a mezőnek adhatok akármilyen értéket. (Subaru, Citroen, Mazda...) Később ezen osztály objektumait pl. hozzáadhatom egy ArrayListhez amiben egyif(marka=="Mazda")feltétellel rögtön tudok kezdeni valamit.
Miért lenne jobb ha acarosztályt terjeszteném ki több al-osztályra?
Elképzelhető, hogy nagyon rossz a példám mert nem látom át az egész lényegét, gyakorlati alkalmazását.
Valaki fel tudna világosítani, esetleg kész gyakorlati példát mutatni?
Ebből sajnos úgy tűnik, hogy éppen nem érted az OOP lényegét, de majd idővel az is eljön.

Én az öröklésből elsőre a polimorfizmust emelném ki. Van például egy Alakzat osztályod. Ebben van egy teruletSzamitas metódus. Van két Alakzatod, Kor és Negyzet. Kor és Negyzet nyilván teljesen máshogy számítja ki a területét, más belső tényezők alapján. De mindkettőben közös, hogy rendelkeznek területtel, és neked ha van egy raklapnyi Alakzatod, egyszerűbb dolgod van, ha mindegyik objektum megmondja magáról, hogy az ő területe mennyi. Persze itt is megcsinálhatod, hogy valamilyen típus változóban elrakod az Alakzat típusát, és ez alapján döntöd el a területszámító függvényben, hogy mit kell tenni. De ez hosszú távon teljesen fenntarthatatlan lesz. Ugyanis ha hozzáadsz egy új Alakzatot, 99%, hogy nem fogod megkeresni az összes if-et, ami Alakzatokat kezel, s el fog romlani a programod. Míg ha a teruletSzamitas abstract metódus, vagy interface-ben van megadva, akkor amint létrehozol egy újfajta Alakzatot, kötelező lesz megadnod a teruletSzamitas fuggveny implementaciojat. Másik probléma: hogyan kezeled azt, hogy egy Kor átmérővel rendelkezik, de egy Negyzet pedig oldal hosszúsággal? Mondhatod, hogy van egy változód, ami vagy az egyik, vagy a másik dolgot reprezentálja. Viszont ha bevezetsz egy téglalapot, akkor már nem lesz elég egy oldal, kettő kell. Ilyenkor mit csinálsz? Ha az Alakzatokban csak az a közös, hogy van számítható területük, akkor nem kell ezzel foglalkoznod. Minden osztályod csak annyit fog magából megmutatni a külvilágnak, ami feltétlenül szükséges.
-
bandi0000
nagyúr
Sziasztok!
Valószínűleg elég triviális lesz a kérdésem

2 éve programozok, idén érettségiztem emelt informatikából (Java-ban), alapvetően értem az OOP lényegét, tisztában vagyok az alapokkal, viszont az osztályok közötti öröklődés hasznát nem igazán látom át.
Egy egyszerű példával:
Adott egycarosztály, benne egyString markamező. Ennek a mezőnek adhatok akármilyen értéket. (Subaru, Citroen, Mazda...) Később ezen osztály objektumait pl. hozzáadhatom egy ArrayListhez amiben egyif(marka=="Mazda")feltétellel rögtön tudok kezdeni valamit.
Miért lenne jobb ha acarosztályt terjeszteném ki több al-osztályra?
Elképzelhető, hogy nagyon rossz a példám mert nem látom át az egész lényegét, gyakorlati alkalmazását.
Valaki fel tudna világosítani, esetleg kész gyakorlati példát mutatni?
Sztem rosszul közelíted meg a dolgot képzeld el így
Van egy osztályod ami tárolja az autók fő tulajdonságait mint pl Le, fogyasztás stb, amit minden autóra el lehet sütni, ebből örökölnek a konkrét típusok, amiknek meg lesznek a fő osztály adattagjai, mint a Le meg a fogyasztás, de ehhez hozzá rakhat még mást, ami esetleg csak rá vonatkozik
Az egésznek az a lényege, hogy ha hasonló osztályaid vannak, akkor nem mindegyikben hozod létre ugyan azokat a változókat, hanem csinálsz egy ős osztályt, ami tartalmazza ezeket a közös tagokat és a többi csak örökli
+ ugyan ez igaz a függvényeire is, pl ha másodfokú egyenletet szeretnél kiszámolni, akkor ha már van egy osztályod ami össze ad két számot, akkor ezt se kell megírni megint csak használni
Nyilván ezek móricka példák, és semmit értelmét nem látod ezeknek, de egy nagy alkalmazásban majd igen jó jönnek ezek
-
skoda12
aktív tag
Az action és event listenereidet a framework triggereli, így azok az event dispatcher threaden fognak futni, tehát lehet belőlük UI elemeket módosítani. A többi osztálynál figyelni kell, hogy ha UI elemeket módosítasz, akkor a SwingUtilities valamelyik invoke...() metódusával legyenek futtatva a megfelelő kódrészek (ezek végül így az event dispatcher threaden fognak futni). Ezzel le vannak fedve a UI-os részek, de neked kell tudni, hogy használsz-e még máshol threadeket és azok helyesen osztják-e meg egymás között az adatokat. Mondjuk valószínűleg az a rész is érdekes, ahol a vonalkódolvasótól átveszed az adatot és kipakolod a UI-ra.
Igazából látni kéne az egész kódot, hogy meg lehessen állapítani hol van probléma az adat megosztással, de egy teljes projektet nincs időm átnézni és kidebuggolni. Érdemes lenne a multithreadingnek és memory consistency erroroknak utánaolvasnod.
-
skoda12
aktív tag
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);
}
}
}Ha nem konzisztensen jó / rossz eredményt kapsz, akkor valószínűleg valami threading issue lesz. Ezeket a swinges / awt-s elemeket csak az event dispatcher threadről szokták frissíteni, mert a többségük nem thread safe.
-
orc88
őstag
Sziasztok!
Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.
Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.
A probléma a következő:
1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából
Mi lehet a gubanc?
A
setText()metódus:public void setTexts() {
DefaultTableModel model = (DefaultTableModel) tabla.getModel();
text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
}És ahol meghívom:
private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
java.awt.event.KeyEvent.VK_DOWN) {
setTexts();
}
}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);
}
}
} -
Drizzt
nagyúr
Sziasztok!
Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.
Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.
A probléma a következő:
1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából
Mi lehet a gubanc?
A
setText()metódus:public void setTexts() {
DefaultTableModel model = (DefaultTableModel) tabla.getModel();
text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
}És ahol meghívom:
private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
java.awt.event.KeyEvent.VK_DOWN) {
setTexts();
}
}Én ugyan nem értek az AWT-hez, de az hogyan találja ki up, vagy down arrow lenyomásra, hogy fel, vagy le kell állítania az aktuális sort?
A handler amit írtál, mindenképpen beállítja a textet a kijelölt sor alapján. De mi állítja be a kijelölt sort? Van valami az AWT-ben ami automatikusan állítja a sor billentyű lenyomásra? Ebben az esetben valamilyen olyan listenert kellene meghívni ami biztosan a selection megváltozása után lesz meghívva. -
orc88
őstag
Sziasztok!
Van egy metódus, ami a táblázatban található adatokat kiírja Textfieldekbe. Ezt a metódust hozzá adtam a tábla kattintásos eseményéhez, amikor kattint valamelyik elemre a táblázatban szépen kiírja a megfelelő fieldbe az adatokat.
Gondoltam megcsinálom ugyanezt VK_UP és VK_DOWN key eventekre is, így nyilakkal történő lépkedés esetén frissíti a fieldek tartalmát.
A probléma a következő:
1 lépéssel le van maradva minden gombnyomásnál, mindig az előző gombnyomás után kijelölt sor adatait szedi ki a táblából
Mi lehet a gubanc?
A
setText()metódus:public void setTexts() {
DefaultTableModel model = (DefaultTableModel) tabla.getModel();
text_id.setText(model.getValueAt(tabla.getSelectedRow(), 0).toString());
text_nev.setText(model.getValueAt(tabla.getSelectedRow(), 1).toString());
text_cikkszam.setText(model.getValueAt(tabla.getSelectedRow(), 2).toString());
text_elar.setText(model.getValueAt(tabla.getSelectedRow(), 7).toString());
text_datum0.setText(model.getValueAt(tabla.getSelectedRow(), 9).toString());
}És ahol meghívom:
private void tablaKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_UP || evt.getKeyCode() ==
java.awt.event.KeyEvent.VK_DOWN) {
setTexts();
}
}keyReleased-re kellett rakni, bocsi az amatőrködésért

-
M_AND_Ms
veterán
Van egy programom, amivel adatbázist kezelek SQLite-tal. Ezt azzal szeretném kiegészíteni, hogy egy másik adatbázis adatait hozzáfűzöm. A probléma az, hogy a másik adatbázis egy régi .dbf (dBase III / IV). Java 8-tól kezdve ahogy olvastam ezeket nem nagyon lehet kezelni JDBC-vel. A különféle libek amiket találtam és kezelik a .dbf-t mind fizetősek, amik ingyenesek azokkal viszont nem tudok SQL lekérdezést használni. Mire lenne érdemes alakítani ezeket a dbf fileokat, hogy utána mindent egy helyi adatbázisban tároljak és egyszerűen tudjak SQL lekérdezéseket végezni?

Ha szükséges az SQLite-ot is cserélhetem másra ha van javaslat.
Ha javaból, vagy mysqlből eléred, akkor elsőnek nyers adatként áthúzod a dbf tartalmát az adatbázisodba, aztán ott már könnyedén tudsz belőle dolgozni.
Anno 10 éve én is így dolgoztam be dbf-t, de az eszközre már nem emlékszem (azt hiszem, mivel Ms-sql volt az adatbázis, annak a pont ilyen feladatokra való Dts eszközével dolgoztam) -
Aethelstone
addikt
Van egy programom, amivel adatbázist kezelek SQLite-tal. Ezt azzal szeretném kiegészíteni, hogy egy másik adatbázis adatait hozzáfűzöm. A probléma az, hogy a másik adatbázis egy régi .dbf (dBase III / IV). Java 8-tól kezdve ahogy olvastam ezeket nem nagyon lehet kezelni JDBC-vel. A különféle libek amiket találtam és kezelik a .dbf-t mind fizetősek, amik ingyenesek azokkal viszont nem tudok SQL lekérdezést használni. Mire lenne érdemes alakítani ezeket a dbf fileokat, hogy utána mindent egy helyi adatbázisban tároljak és egyszerűen tudjak SQL lekérdezéseket végezni?

Ha szükséges az SQLite-ot is cserélhetem másra ha van javaslat.
Vagy dbf->csv, de a csv ugye nem hierarchikus vagy pedig a dbf-ből insertes scriptet generálsz. Szerintem az utóbbi jobb.
Ez ingyenes: https://github.com/albfernandez/javadbf
-
Aethelstone
addikt
És tényleg működik nélküle is
Hétvégén foglalkoztam vele, csak mivel napi használatban van az olvasó így nem tudták ideadni, de most kipróbáltam és príma.
Köszi!RexpecT: Igen ezeket megtaláltam, szívtam is vele pár órát mert már gyakorlatilag a linkek fele nem élt, de így igazából már nem is nagyon van rá szükségem, mindenesetre köszönöm!

Szívesen

-
RexpecT
addikt
Ahogy nézem ezt az SDK-t kell leszedni hozzá, a windowsos verzióban benne van az általad említett driver is.
Itt a developer guide hozzá. -
Aethelstone
addikt
Elvileg amikor beolvasol egy vonalkódot, akkor a vonalkódhoz tartozó számsort kapod. Ez valami input mezőben megjelenik. Eddig stimt? Utána ezzel a számsorral azt csinálsz, amit akarsz.
-
Aethelstone
addikt
Google Drive-ba felraktam kompletten ami kell a feladathoz, és ahol elakadtam.
Pastebin a fő osztályról.
Ami még kellhet hozzá a 'tranzakció' osztály (tranzak.java):public class tranzak {
public int id;
public ArrayList<String> term;
public tranzak(ArrayList<String> _term) {
this.term = _term;
}
public tranzak(int _id, ArrayList<String> _term) {
this.id = _id;
this.term = _term;
}
public void getTerm() {
for (int i = 0; i <= this.term.size()-1; i++) {
System.out.println(this.term.get(i));
}
}
public void addTerm(String _ujterm) {
this.term.add(_ujterm);
}
}Amire rájöttem időközben:
Main.class-ban van egy ciklus ami a problémámat okozza:int index = 1;
ArrayList<String> temp = new ArrayList<String>();
tranzak temptranz = new tranzak(0, temp);
for (int i = 0; i <= beolv.size()-1; i++) {
if (beolv.get(i).equals("F")) {
temptranz.id = index;
System.out.println(temptranz.id);
System.out.println(temptranz.term);
//Idáig minden OK, szépen megkapja az (átmeneti) tranzakció az azonosítóját és a terméklistát
trs.add(temptranz);
//Beállítom a változókat a következő tranzakcióhoz
ind++;
temptranz.id = 0;
temptranz.term.clear();
} else {
temptranz.addTerm(beolv.get(i));
}
}
//Viszont amikor kiiratnám a végleges tranzakciókat tartalmazó listát már rossz ID-t és üres terméklistát kapok vissza
for (int i = 0; i <= trs.size()-1; i++) {
System.out.println(trs.get(i).id);
System.out.println(trs.get(i).term);
}Itt a temptranz-ba gyűjtögetem az információkat mind addig amíg "F"-et tartalmazó sort nem talál a ciklus. Ha "F"-hez ér, akkor az eddig összegyűlt adatokkal az átmeneti temptranz objektumot egy az egyben hozzáadnám az ArrayListhez ami tranzakcio objektumokat tartalmaz. A probléma ott jön elő, hogy a
trs.add(temptranz);sor után kinullázom az ideglenes Stringeket tartalmazó Listát, és valamiért (ezt lehet tudnom kéne
) hiába adtam már hozzá az objektumot, kitörli belőle a String lista tartalmát és üresen adja át 
Szóval a probléma okára nagyjából rájöttem, közben meg is oldottam Listák nélkül a feladatot, de kíváncsi lennék, hogy mi okozza pontosan, és hogyan kerüljem el a jövőben az ebből adódó hibákat.

Ui.: a sok próbálkozás és ctrl+c / ctrl+v után lehet maradt benne 1-2 fölösleges sor és csúnyán nézhet ki, utólag is bocsi

Huh, ez a kód több sebből is vérzik. Érdekel?
-
RexpecT
addikt
Google Drive-ba felraktam kompletten ami kell a feladathoz, és ahol elakadtam.
Pastebin a fő osztályról.
Ami még kellhet hozzá a 'tranzakció' osztály (tranzak.java):public class tranzak {
public int id;
public ArrayList<String> term;
public tranzak(ArrayList<String> _term) {
this.term = _term;
}
public tranzak(int _id, ArrayList<String> _term) {
this.id = _id;
this.term = _term;
}
public void getTerm() {
for (int i = 0; i <= this.term.size()-1; i++) {
System.out.println(this.term.get(i));
}
}
public void addTerm(String _ujterm) {
this.term.add(_ujterm);
}
}Amire rájöttem időközben:
Main.class-ban van egy ciklus ami a problémámat okozza:int index = 1;
ArrayList<String> temp = new ArrayList<String>();
tranzak temptranz = new tranzak(0, temp);
for (int i = 0; i <= beolv.size()-1; i++) {
if (beolv.get(i).equals("F")) {
temptranz.id = index;
System.out.println(temptranz.id);
System.out.println(temptranz.term);
//Idáig minden OK, szépen megkapja az (átmeneti) tranzakció az azonosítóját és a terméklistát
trs.add(temptranz);
//Beállítom a változókat a következő tranzakcióhoz
ind++;
temptranz.id = 0;
temptranz.term.clear();
} else {
temptranz.addTerm(beolv.get(i));
}
}
//Viszont amikor kiiratnám a végleges tranzakciókat tartalmazó listát már rossz ID-t és üres terméklistát kapok vissza
for (int i = 0; i <= trs.size()-1; i++) {
System.out.println(trs.get(i).id);
System.out.println(trs.get(i).term);
}Itt a temptranz-ba gyűjtögetem az információkat mind addig amíg "F"-et tartalmazó sort nem talál a ciklus. Ha "F"-hez ér, akkor az eddig összegyűlt adatokkal az átmeneti temptranz objektumot egy az egyben hozzáadnám az ArrayListhez ami tranzakcio objektumokat tartalmaz. A probléma ott jön elő, hogy a
trs.add(temptranz);sor után kinullázom az ideglenes Stringeket tartalmazó Listát, és valamiért (ezt lehet tudnom kéne
) hiába adtam már hozzá az objektumot, kitörli belőle a String lista tartalmát és üresen adja át 
Szóval a probléma okára nagyjából rájöttem, közben meg is oldottam Listák nélkül a feladatot, de kíváncsi lennék, hogy mi okozza pontosan, és hogyan kerüljem el a jövőben az ebből adódó hibákat.

Ui.: a sok próbálkozás és ctrl+c / ctrl+v után lehet maradt benne 1-2 fölösleges sor és csúnyán nézhet ki, utólag is bocsi

Felülírod az objektum értékeit ebben a két sorban:
temptranz.id = 0;
temptranz.term.clear();Ezután se lesz még jó, mert egyszer hoztad csak létre a temptranz objektumot.
-
RexpecT
addikt
Sziasztok!
Egy érettségi feladattal van problémám. Eddig mindegyik feladatot megoldottam valamilyen úton-módon, viszont most valamiért nem akar működni az ArrayList úgy ahogy én szeretném

Valakinek elküldhetném privátban? (Pár sor lenne az egész, valószínűleg valami bagatell hibát vétettem, viszont több fájlban vannak a dolgok, nem akarom teleszemetelni a topikot
)Rakd fel pl. pastebin-re a kódot, így más is tanulhat a hibából.

-
SybenX
őstag
-
Lortech
addikt
Üdv!
Nem tudom megoldható-e, de valami olyasmire lenne szükségem, hogy egy byte/integer váltózó értéke mindig 0 és 9 között maradjon műveletek után. Pl.: value %= 10 megakadályozza, hogy 9 fölé menjen az értéke, value++ esetén 0-ra ugrik az értéke.
Na nekem ennek az ellenkezőjére is szükségem lenne, (ha létezik ilyen) hogy (ha value = 0) value-- után 9 értéket vegyen fel.(Egy olyan programról van szó ami képeket mutat végig 0-tól 9-ig sorszámozva, egy előre és egy vissza gombbal lehet léptetni őket, az előre működik)
Kezdő vagyok, nem tudom hogy lehet a legegyszerűbben megoldani ilyen feladatot.

x = (x + n) % n ?
itt n = 10, x-et lépteted, és x értékét a fenti képlettel számolod ki. -
skoda12
aktív tag
Üdv!
Egy aprócska problémám akadt JFrame/JPanel-el kapcsolatban.

Adott egy JFrame, egy JPanellel. A program futása során ha szükséges hozzá ad képet tartalmazó JLabeleket a panelhez.
A probléma csak az, hogy ezek a labelek csak akkor jelennek meg ténylegesen, ha az ablakot akár egy pixellel is nagyítom vagy kicsinyítem.

Frame: Null layout
Panel: az összeset kipróbáltam, egyikkel se jó, de igazából csak a flow layout jo nekem, ami szépen egymás után pakolja a képeket (labeleket)Valami tipp?

Swing UI anomáliák akkor fordulnak elő többnyire, ha nem a UI threaden piszkálod a komponenseket.
-
Sirpi
senior tag
Üdv!
Javaban egy akasztófa játékot kell csinálnom.
A program nagy része kész, már csak a kép megjelenítése hiányzik, amit én előre elkészített .jpg képekkel oldanék meg, (6 db van) amit a hibázások száma alapján cserélgetek.
Csináltam egy metódust, ami minden karakter megnyomás után lefut, és beállítja a képet a hibák alapján, így néz ki:public Icon faimg(int hiba) {
ImageIcon kep = new ImageIcon();
String elut = " ";
switch (hiba) {
case 0: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_0.jpg"); break;
case 1: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_1.jpg"); break;
case 2: kep = new ImageIcon("af_2.jpg"); break;
case 3: kep = new ImageIcon("af_3.jpg"); break;
case 4: kep = new ImageIcon("af_4.jpg"); break;
case 5: kep = new ImageIcon("af_5.jpg"); break;
case 6: kep = new ImageIcon("af_6.jpg"); break;
}
(Próbáltam direkt kétféleképpen is, de egyikkel se megy a dolog)Ezt lefuttatom minden gombnyomás után:
kep = muvelet.faimg(hiba);
keplabel.setIcon(kep);Nem akarja megjeleníteni a képet, nem tudom mit rontok el

System.out.println-el is megnéztem, a kep megkapja az értéket (elérési utat), de amint lefut, az eredeti fehér kép helyén a keplabel-en semmi nem lesz, a fehér kép is eltünik.
Ha szükséges a forráskódot is meg tudom mutatni.
Ha mág megoldódott, egy kis optimalizáció:
A switch helyett elég ennyi:kep = new ImageIcon("af_" + hiba + ".jpg");
-
disy68
aktív tag
Üdv!
Javaban egy akasztófa játékot kell csinálnom.
A program nagy része kész, már csak a kép megjelenítése hiányzik, amit én előre elkészített .jpg képekkel oldanék meg, (6 db van) amit a hibázások száma alapján cserélgetek.
Csináltam egy metódust, ami minden karakter megnyomás után lefut, és beállítja a képet a hibák alapján, így néz ki:public Icon faimg(int hiba) {
ImageIcon kep = new ImageIcon();
String elut = " ";
switch (hiba) {
case 0: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_0.jpg"); break;
case 1: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_1.jpg"); break;
case 2: kep = new ImageIcon("af_2.jpg"); break;
case 3: kep = new ImageIcon("af_3.jpg"); break;
case 4: kep = new ImageIcon("af_4.jpg"); break;
case 5: kep = new ImageIcon("af_5.jpg"); break;
case 6: kep = new ImageIcon("af_6.jpg"); break;
}
(Próbáltam direkt kétféleképpen is, de egyikkel se megy a dolog)Ezt lefuttatom minden gombnyomás után:
kep = muvelet.faimg(hiba);
keplabel.setIcon(kep);Nem akarja megjeleníteni a képet, nem tudom mit rontok el

System.out.println-el is megnéztem, a kep megkapja az értéket (elérési utat), de amint lefut, az eredeti fehér kép helyén a keplabel-en semmi nem lesz, a fehér kép is eltünik.
Ha szükséges a forráskódot is meg tudom mutatni.
Ennyiből ugyan nem látszik mi a hiba, de szerintem az elérési utakkal lehet gond.
Csináltam egy kis minta projectet (maven project), két "kép cserélővel", az egyik a resource mappából szedi a képeket, a másik pedig külső könyvtárból.
Ha nincs jól megadva az elérési út a jelenség az általad is leírttal egyezik. Annyit még változtattam, hogy egységesen kezeljem a két változatot, hogy az ImageIcon-t java.net.URL paraméterrel példányosítom.
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- GAMER PC! Ryzen 7 7800X3D / RTX 5080 / B650 Strix / 32GB 6000MHz / 1000w Gold! BeszámítOK
- AKCIÓ! Lenovo Thinkpad P15 Gen 1 FHD notebook - i7 10850H 32GB DDR4 1TB SSD T2000 4GB W11
- Kezdő Gamer PC-Számítógép! Csere-Beszámítás! I5 7400 / GTX 1650 / 16GB DDR4 / 256 SSD + 1TB HDD
- HP ProBook 650 G5 - i5 8265U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- BESZÁMÍTÁS! 10TB WD Red PRO WD101KFBX meghajtó garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest










