- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy A54 - türelemjáték
- Android alkalmazások - szoftver kibeszélő topik
- Mobil flották
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Google Pixel topik
- Samsung Galaxy A36 5G - a középső testvér
- Milyen okostelefont vegyek?
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Magisk
Új hozzászólás Aktív témák
-
Karma
félisten
Ezt kene otvozni az elotted levo felkialtojeles megoldassal es szerintem megvan a nyertes
Boolean valtozo invertalasanal teljesen felesleges a ?: operator.
Ha tippelnem kene, ebbol valamikor a klasszikus bortonor problema lesz (100 zart cella, az or eloszor mindegyiet kinyitja, aztan minden masodikat becsuk, aztan minden harmadikat atbillent... egeszen szazig). Mondjuk ertelme nincs sok, biztosan iskolai feladat.
-
Karma
félisten
válasz
WonderCSabo #3721 üzenetére
Ez bőven lábbalhajtós példa így is, és az az aspektus nincs benne, hogy a workereknek valamilyen eredményt is kéne előállítania és azt feldolgozni az executorservice leállása után...
A Java 7-es ForkJoinPool már kezd hasonlítani.
Szerk.: Az előző két mondat még a szerkesztésed előttre válasz, de látom már látod mire is kérdeztem rá - erre a "vmi jó kis megoldásra"
-
Karma
félisten
válasz
WonderCSabo #3719 üzenetére
Hogyan lehet megoldani, hogy ne kézzel kelljen szálakra bontani a ciklust és összevárni az eredményt?
-
Karma
félisten
-
Karma
félisten
válasz
pakriksz #3613 üzenetére
A dolog onnantól kezdve büdös, mint a Gangesz partja, hogy "sima HTTP fájlszerver". Olyan nem létezik, ha esetleg arra gondolsz, hogy a könyvtár URL-jét beírva mappalistát látsz, az is szerverfüggő, embereknek szánt HTML oldal...
Ha a fájlok nevei kötöttek és előre ismertek, el lehetne lavírozni a HTTP HEAD hívással és a Last-Modified header értékével. De ha a fájlok nevei változhatnak, bővülhetnek, ez nem elég önmagában.
Igénytelen béna megoldást lehet építeni kétféleképpen a szerver okosítása nélkül. Az egyik, hogy a szerver által kigenerált fájllistát visszaparsolod kézzel. A másik, hogy csinálsz egy szöveges/XML fájlt kézzel, amit egy fix helyre, amit lehívsz mindig. És kézzel karban tartod jobb eszköz hiányában...
Ha meg valami okosítást raksz a szerverre, mehet rá SVN, Git (szinkronizálás adott), vagy WebDAV és máris szabványos és kezelhető.
-
Karma
félisten
válasz
Superhun #3612 üzenetére
Whut? Lehet rozsdás már az AWT/Swing tudásom, de szerintem a tényleges rajzolás mindig a paint() metódusban történik, és az a UI szálon hívódik meg. A painten kívül hiába hívogat bármilyen rajzolást, nem fog megjelenni.
Ettől függetlenül persze a megoldáshoz kell egy Timer/TimerTask (háttérszál), ami periodikusan csinál egy új kör (modell) objektumot, és hív egy repaint()-et. A paint() meg kirajzolja a körlista aktuális állapotát.
-
Karma
félisten
-
Karma
félisten
Szerintem egyiket se, inkább a Simple-t.
De legalább egy pull parsert, ha mindenképp kézzel akarod írni. Az adott node kiválasztására meg általánosságban az XPath való - DOM parsolás után legalábbis, mert stream parsolásnál nehezen értelmezhető.
-
Karma
félisten
válasz
pvt.peter #3550 üzenetére
Ilyen megoldásoknak szerintem nincs helye egy Java topikban. De igazából semmilyen szakmaiban se. Stringben eltárolni a számot? Nooormális?
Ha nem akarsz saját adatosztályt írni, akkor legalább a AbstractMap.SimpleEntryt használd az adatpár tárolására. Ezt meg belerakhatod a HashSetbe.
-
Karma
félisten
válasz
pvt.peter #3534 üzenetére
Ez egy fontos tervezési elv kicsiben. Amikor a változót később használod, nem függ így a kódod attól, hogy a változó konkrétan egy HashMapet takar, csak hogy megfelel a Map interfésznek - más szóval kulcs-érték párokat tudsz tárolni benne.
Így a későbbi kód módosítása nélkül kicserélheted például TreeMapre (ami hashtábla helyett piros-fekete fában tárolja az értékeket), ha a helyzet úgy kívánja. Vagy akár egy tömbre, amiben lineáris kereséssel túrod ki a megfelelő értéket. A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg.
Azért mondom, hogy kicsiben, mert egy függvényen belül ennek nincs nagy jelentősége, maximum szoktatod magad csak az interfészek deklarálásához. Nagyobb programban viszont, ahol komponensek kapcsolódnak egymáshoz, ez már kritikussá válik. És jönnek olyan finomságok, mint Dependency Inversion.
-
Karma
félisten
Válaszolok én is egy kérdéssel, ugyanis egyáltalán nem jött át, hogy a Histogram osztályodnak milyen szerepet szántál. A kódrészlet alapján ez csinálja a számítást, a rajzolást és az ablak feldobását is, ami mindezt megjeleníti? Mert azért ez durván sok felelősség egy osztálynak.
A privát JPanel megoldás egynek elmegy. Egy másik ilyen tákolat meg ha a Histogram lenne a JFrame leszármazott, nem csak egy Object.
A lényeg az, hogy a paint() felüldefiniálást nem úszhatod meg. Máshol hiába próbálsz rajzolni a kódodban, az Swinget nem fogja érdekelni.
-
Karma
félisten
Csinálnod kell egy komponenst, amit a Frame gyerekének adsz, és az végzi a rajzolást. Vagy csinálsz egy BufferedImage-et, arra rajzolod a hisztogramot, és a paint metódusban egyszerűen kirajzolod a tartalmát.
Valamilyen leszármazást kell csinálnod, nem erőszakolhatod meg a rendszert. Ja és a getGraphicsot felejtsd el, az csak painten belül életképes.
-
Karma
félisten
Ha esetleg úgy érzed, hogy kinövöd a beépített megoldásokat, nekem anno bevált a MiG Layout. Rugalmas és eléggé adja magát a használata szerintem
-
Karma
félisten
Errefelé nézz szét a layouttípusokkal kapcsolatban. Amennyit leírtál,az alapján a default BorderLayout is elég. Amikor a szúlőpanelhez hozzáadod a gyerekeket, használd az add második argumentumát: a bal oldalinak BorderLayout.LINE_START, jobb oldalinak LINE_END értékkel.
-
Karma
félisten
válasz
RaPiDsHaRe #3461 üzenetére
A PATH környezeti változóhoz kell hozzáadnod a bin mappa teljes elèrési útját, pontosvesszővel elválasztva az utolsótól. Windowson a legegyszerűbb ezt a Rapid Environment Editorral felvenni, de persze a vezérlőpulton keresztül is megoldható.
Linuxon és társain meg a ~/.bash_profile-ba kell hasonlót betenni (export PATH=$PATH:/valami/valami/bin).
-
Karma
félisten
válasz
Scroll Lock #3426 üzenetére
Esetleg a main függvényed szignatúráját idemásolnád?
-
Karma
félisten
válasz
WonderCSabo #3409 üzenetére
Igen, én is ilyen SAX-okat szoktam látni. Tagváltozók, hogy éppen milyen tagen belül jár a parser, aztán a startElement, characters és endElement metódusokban összeturmixolva a mindenféle esetet lekezelő logika; bonyolultabb esetben egy stack még előfordul. Eztán elindítod a parsert az XML-re, végigdarálja, a callbackjeid meghívódnak és a legvégén örülsz, ha minden kitöltődött rendben.
Ehhez képest a StAX fordítva működik. Amikor parsolsz, te lépteted folyamatosan a következő tokenre (iterátor), és az aktuális token típusától, nevétől, stb. eldöntheted, mit csinálsz - akár félbe is hagyhatod a feldolgozást.
De ami fontosabb, a parsert szabadon megoszthatod több metódussal, amik egy adott elemet tudnak feldolgozni. Az előző példakód úgy nézne ki, hogy if fák helyett vannak parseFirstName, parseLastName, stb. metódusaid, amik a startElementtől az endElementig elvégzik a dolgukat.
És eközben teljesítményben nem rosszabb. Itt egy jókis stackoverflow kérdés, amit reggel olvasgattam amikor a kérdésemet elkezdtem.
Példát most nem tudok írni, mert dolgozom.
-
Karma
félisten
válasz
tragiQss #3210 üzenetére
Erre van az általános Programozás topik.
De az ilyen általános "embert keresek" helyett a konkrét kérdéseket ott is jobban toleráljuk. -
Karma
félisten
válasz
pvt.peter #3202 üzenetére
A TC Jad Plugin a kedvencem.
-
Karma
félisten
válasz
DreaD88 #3153 üzenetére
Ha a "hashset-be adom meg" alatt azt érted, hogy létrehozol egy HashSetet, konstruktorban átadva a már meglévő kollekciódat; a "mindenből csak egyet ad vissza" alatt meg iterációt (foreach vagy manuális iteráció, mindegy) akkor igaz.
Azzal a kitétellel, hogy az elemek sorrendje összezilálódhat, mert semmi garancia nincs. Ha azt akarod, hogy a sorrend is megmaradjon, LinkedHashSetet használj.
-
Karma
félisten
Hogy mit szeretnél? Fontos lépés a programozásban, hogy pontosan tudod mit és miért akarsz csinálni. A zajt kordában kell tartani.
Jelen példa esetén nekem nem jött át a szándék. Kifejthetnéd.
Mindenesetre ha egy nagy stringben akarsz mindent összegyűjteni, akkor nincs más dolgod, mint összefűzöd őket. A rossz megoldás a + operátor, a kicsit jobb a StringBuffer/StringBuildet használata, nekem személy szerint az Apache Commons Lang nevű library StringUtils.join() metódusa tetszik a legjobban - nem vagyok a kerék újrafeltalálásának híve.Persze a gyakorlás az más tészta. De akkor is legyen legalább minimális értelme.
-
Karma
félisten
Ez a számítás teljesen jó ebben a formában szerintem.
A Math osztályban találsz tetszőleges hatványra emelő metódust, de a négyzet pont olyan, hogy ezért felesleges ezt bevonni.
---
Az alaphelyzetre visszatérve nem vagyok annyira meggyőződve arról, hogy jól választottál nyelvet. Amit most írsz stílus, ami egyszer strukturált programozásig fejlődhet, szerintem nem igényli a Javát; viszont rossz Java programozási gyakorlatot ültethet el a fejedben, amit nehéz lesz kiirtani.
-
Karma
félisten
válasz
bucsupeti #3104 üzenetére
Ha gányolni akarsz, semmi akadálya annak, hogy lefordítsd az egy szál .class fájtt. és kicseréld a JAR-on belül (hiszen az csak egy átnevezett zip)... Feltéve persze, hogy az interfész egyáltalán nem változott.
De ha ilyen jellegű változásra fel akarsz készülni, miért nem konfigurációként tárolod az ÁFA kulcsot, nem pedig a kódba égetve?
-
Karma
félisten
válasz
bucsupeti #3102 üzenetére
Kikapcsolódás (mármint sok órát bele lehet ölni), XML fetisisztáknak örömforrás, de mindenek felett egy Java build rendszer.
Amiben a legkisebb projekteket is tudja segíteni: 1) sablonokból (ún. archetípus) többszázféle projektet létre lehet hozni egyszerűen; 2) ha bármiféle libraryre szükséged van(*), csak megadod függőségként, a Maven levadássza, felhasználja a fordításnál, sőt akár egybe is csomagolja neked a programoddal; 3) ad egy egységes, mindenre kiterjedő keretet a fordításnak (előfeldolgozás -> fordítás -> tesztelés -> csomagolás -> archiválás), ami szabadon konfigurálható, és 4) tovább bővíthető szinte bármilyen célra(**).
Hatalmas változást hozott a Java fejlesztői munkáimban, hogy circa egy éve beleástam magam. Mindenképp ajánlom, hogy próbáld ki
És ha van valami konkrét kérdés, címezd ide, elég lelkes vagyok e kapcsán
Egyébként a fentebbiek hatalmas projekteknél hatványozottan jól jönnek. Nincs is jobb, mint kézzel másolgatni többszáz dependenciát, és többtíz Ant projektet sokezer soros kézi szkripttel fordítani...
(*) A nyilvánosan elérhető csomagok között legegyszerűbben a search.maven.org-on tudsz keresni. Ez az ún. Maven Centralt indexeli - ami kvázi az egész Java világ.
(**) Rengeteg plugin elérhető el, legyen szó kódanalízisről, dokumentációgenerálásról, XML validálásról, LESS->CSS konverzióról, source controlról, tényleg bármiről. Sőt, még Antot is képes beágyazva futtatni, így még tovább bővülnek a lehetőségek.
-
Karma
félisten
válasz
Superhun #3100 üzenetére
Ha külső, komolyabb librarykről van szó, vagy nagyobb projektekről, megérheti a Mavent is bevonni a játékba. Mindent és még annál is többet megcsinál.
Bár nem hiszek abban, hogy van egy kritikus minimális méret, ami alatt nem éri meg rendesen szervezett projektet gyártani
-
Karma
félisten
A második esetben történik a már a legelején emlegetett autoboxing, tehát a JVM látja a primitív int 8-ast és hogy Integer objektum kellene, ezért automatikusan meghívja az Integer.valueOf() függvényt rá.
És ez a függvény, mint látszott, belső cache-t használ a kis számokra, ugyanazt a konkrét objektumot adja vissza.
-
Karma
félisten
Ez nem példakód, hanem a JRE forráskódja
-
Karma
félisten
-
Karma
félisten
Huh, erős kód. Meg egy kicsit erjedt is. Ha már egyszer a progressbar értékét is másik szálból közvetlenül babrálod a setValue-val, miért nem hívod meg a dialógus setVisible-jét amikor vége?
Félreértéseket elkerülendő, ez így nagyon-nagyon nem jó megoldás, de legalább begipszelnéd a lyukat
A probléma ugyanis az, hogy a Swing (meg úgy egyébként a legtöbb UI framework) nem szereti azt, ha a UI szálon kívül (itt event dispatcher threadnek hívják) bármit módosítasz. Jobb helyeken egy hatalmas exceptiont kapsz a nyakadba, itt úgy tűnik nem.
A dialógus elindítása még rendben van, a másik szálból nem szabadna közvetlenül hívogatni a setValue-t.
Fontos megjegyezni, mert ahogy látom itt félreértés van: az új szál indításával a vezérlés két, párhuzamosan futó részre szakadt. Ez a mondatod: A kérdés, ha végzett a run() metódus, hogyan tudom ezt a szálat leállítani és visszaadni a másiknak a vezérlést." értelmetlen, az indító dialógusos kód nem vesztette el a szálát, egyszerűen visszatért az eseményekre várakozó állapotba. Ezt végzi is, csak a modális dialógus miatt nem törődik máshova irányuló kattintásokkal és billentyűleütésekkel.
Magára a problémára visszatérve, egy kicsit szerteágazik a megoldás, mert olyan alap dolgokkal kellene tisztában lenned, mint a UI (dialógus, progressbar helyzete) elválasztása az üzleti logikától (fájlmásolás száz bájtonként). Kéne egy rendes Listener interfész, amit a másoló hívogat (ezen keresztül jelentve a százalékos állást, számként), és a programGUI-d implementálja.
Ehhez az implementációhoz meg a SwingUtilities.InvokeLater-t kéne használnod, hogy a dispatcher szálon fusson le a tényleges progress bar frissítés, meg a dialógus elrejtése.
Így nem függene a másolód attól, hogy a UI-on milyen komponensek vannak és hogy hívják őket, csak a dolgát végezné
-
Karma
félisten
Egyszerű, az átlátszó ablak miatt adnia kéne magát. A probléma az, hogy a UI szálban végzel blokkoló IO műveletet, ezért amíg a másolás tart, nem tudja frissíteni a frame-et.
A legegyszerűbb, Java 6 és előtti megoldáshoz külön szálat kéne indítanod, amiben ezt a másolást végzed, és periodikusan visszajelzel a progressről a UI szálnak - ami frissíti a progressbart.
Java 7 alatt már van AsynchronousFileChannel ilyesmihez, de nem ismerem (hatosnál leragadtam).
-
Karma
félisten
Ha a felhasznalo nem telepitett Nokia PC/Ovi Suite-ot, akkor van egy kis valoszinusege hogy tenyleg elindul. Kulonben a Suite indul es probalja telefonra telepiteni.
Masreszt ha nincs benne a PATH-ban a JRE bin mappaja es a JAVA_HOME sincs beallitva, hogy irjon egyszeru cmd-t melle? Szerteagazo problema, amit mar masok megoldottak, de nyilvan sokkal jobb ujra feltalalni a kereket, szarul.
-
Karma
félisten
válasz
chungee #2367 üzenetére
1) Telepítesz egy JRE-t a java.com-ról.
2a) Ráenterezel a JAR fájlra.
-- vagy --
2b) Indítasz egy parancssort, és abban cd paranccsal elmész a Java programod könyvtárába, majd beírod azt, hogy java -jar <a fő JAR fájl neve> (relációs jelek nélkül, természetesen).
-- vagy --
2c) Total Commanderben odamész, és ott írod be az előző parancsot. -
Karma
félisten
Java ME-vel lehetetlen megfelelo sebesseget elerni egy ilyen dekodolashoz. Felejtos.
Masik tema: x123456 szerintem nezz utana az SWT-nek, en nem ismerem, de sokkal ertelmesebbnek tunik a Swingeknel. Mondjuk en a kovetkezo hobbi-ismerkedesnek a Vaadint szemeltem ki, meg majd a ZK toolkitet,
-
Karma
félisten
válasz
x123456 #1924 üzenetére
Ez most csak egy ötlet, de szerintem meg lehet oldani.
Most olvastam, hogy a statikus metódusok compile-time bindingon mennek át, tehát ha az ősosztályban hivatkozol egy saját statikus metódusra közvetlenül, akkor biztosan az ősosztályé fog meghívódni.
Viszont ha reflekciót használsz, akkor meg tudod hívni név alapján.
Úgyhogy megpróbálhatnál az ős- és leszármazott osztályban is egy azonos nevű factory metódust írni, és azt a main()-ben GetClass().GetMethod("xxx") és az Invoke() segítségével meghívni.
Annyi mondjuk a csavar csak, hogy a main() metódust indításkor meg kell határoznod, melyik osztályban keresse a JVM
De úgyis csak kísérletről van szó, nem?
Élő rendszerekben ez nagyságrendekkel bonyolultabb, általában frameworkök vannak az életciklusokra, a cserélhetőségre meg ilyenek...
-
Karma
félisten
válasz
x123456 #1921 üzenetére
A beépített layoutokkal való szívás helyett fogd meg a MigLayoutot, pillanatok alatt össze fogod tudni rakni vele amit szeretnél.
Céges projectben is felhasználtam már (BSD licenc), sok évvel meghosszabbította a várható élettartamomat.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Mikrotik routerek
- Fujifilm X
- ASUS routerek
- Elstartolt az AMD munkaállomásokhoz szánt platformja
- Casco és kötelező gépjármű felelősségbiztosítás
- Linux kezdőknek
- Synology NAS
- Szeged és környéke adok-veszek-beszélgetek
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- új bontatlan iPhone 16 Pro 128GB black titanium fekete titán független Apple 1 év garancia ajándék
- HP 635 laptop eladó
- Thinkpad X230 legenda: i7 CPU, IPS kijelző, 12 GB, dupla SSD, magyar villbill, webcam, fingerprint
- Honor X6b 128GB Kártyafüggetlen 1Év Garanciával
- Apple Watch SE2 / 44mm / Midnight / Black Sport / Cellular (99%)
- Nike Airmax 720 43-as sneaker eladó
- DELL T40 EMC Szerver
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest