- 200 milliárd dollárt önt a memóriagyártásba a Micron
- Elképesztő mértékben tömörítenék be a nagy nyelvi modelleket
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
Új hozzászólás Aktív témák
-
bucsupeti
senior tag
sziasztok,
lehet olyat csinálni java-val, mint amilyenek a dll-ek más programozási nyelvekben?
arra gondolok pl, hogy egy osztályt lehet-e valahogy küsöleg hivatkozni a fordítása után egy másik különálló fejlesztéskor. -
Sziasztok,
Eclipse-ben beallitottam, hogy ne csak Ctrl-Space-re jojjon fel a code assist hanem megadott karakterekre is hozza fel automatikusan.
Ezzel csak egy baj van, hogy mikor feljon a pop-up, akkor kijeloli defaultbol az elsot, s igy ha nem szeretnek semmit valasztani, akkor is beszurja az elsot egy space-re vagy enterre nyomva.Meg lehet valahogy magyarazni neki, hogy ne valasszon ki semmit onkenyesen?
Kb. ugy kellene mint Visual Studoban is mukodik.
Nezegettem a beallitasokat, de nem lattam relevans reszt. -
SaNyEe
aktív tag
válasz
Peter Kiss #3094 üzenetére
A Model - View - Control pattern-t követni fogom fejlesztés során, php-ban is nagyjából ezt követtem.
Framework alatt vaadin-t meg a hozzá hasonló kattintgatós megoldásokat értettem.Később lehet kipróbálok egyet-egyet, de egyenlőre köszönöm nem, inkább megismerkedek a mélységeivel ennek a témának
-
SaNyEe
aktív tag
Sziasztok,
Nyargalok át PHP vonalról Java EE app server Servlet + JSP kombóra.
Koncepció szintű kérdésem lenne hozzátok.
PHP web app fejlesztésekkor bevett szokás volt részemről, hogy minden get / post request az index.php-hoz futott be. Ez a fájl példányosított egy site loader osztályt, ami felelős volt a weboldal teljes "megrajzolásáért" és a site fő tartalmának megjelenítéséért, illetve az összes paraméter átadásáért is.
Ezáltal nem kellett minden osztályomat azzal kezdeni, hogy kirajzoltassam a fő tartalom előtti részt, a fő tartalmat magát és a fő tartalom utáni részt is.Ti milyen megoldást alkalmaztok JAVA Web appok fejlesztésekor? A csudaszuper frameworkoket egyenlőre mellőzném
-
tttzshd
tag
Sziasztok !
Keresek olyanokat akiket érdekel a Game Maker játékfejlesztő program és van kedvük beszállni egy rts játék projektbe .
Persze olyanok főleg akik már konyítanak valamennyit a script-hez mert a Game Makernek gml script nyelve van
egy könnyen megtanulható nyelv.De bárkit szívesen látunk aki játékot szeretne csinálni
ha elhatároztad magad ,vegyél fel a skyp-on : Halmágyi Zsolt
üdv
-
válasz
Speeedfire #3090 üzenetére
+1
-
Lacces
őstag
Sziasztok!
Téma Polimorfizmus
Osztály:
public class Szerelveny {
protected int kocsikSzáma;
protected boolean földAlatti;
public Szerelveny(int kocsikSzáma) {
this(kocsikSzáma, false);
}
public Szerelveny(int kocsikSzáma, boolean földAlatti) {
this.kocsikSzáma = kocsikSzáma;
this.földAlatti = földAlatti;
System.out.println("Új szerelvény: " + this);
}
@Override
public String toString() {
return "szerelvény (" + kocsikSzáma + " kocsi, " + (földAlatti ? "földalatti" : "felszíni") + ")";
}
public Szerelveny összefűz(Szerelveny sz) {
boolean b = földAlatti && sz.földAlatti;
System.out.println("Sz + Sz: " + this + " + " + sz);
return new Szerelveny(kocsikSzáma + sz.kocsikSzáma, b);
}
}Main osztály függvénye:
Szerelveny szsz = new Szerelveny(3);
Szerelveny szm = new MetroSzerelveny(4);
System.out.println(szsz.összefűz(szm));Eredmény:
// Első utasításra
Új szerelvény: szerelvény (3 kocsi, felszíni)
// Második utasításra
Új szerelvény: metró (4 kocsi, földalatti)
Új MetroSzerelveny: metró (4 kocsi, földalatti)
// Harmadik utasításra
Sz + Sz: szerelvény (3 kocsi, felszíni) + metró (4 kocsi, földalatti)
Új szerelvény: szerelvény (7 kocsi, felszíni)
szerelvény (7 kocsi, felszíni)Az első kettő utasításra a kiírás az tiszta sor.
Viszont a harmadik utasításnál nem értem, a "szerelvény(7 kocsi, felszíni)" sort minek írja még ki? Az "Sz+Sz..." és "Új szerelvény: szerelvény(7 kocsi, felszíni)" is rendben van, de az utolsót nem értem, hogy azt miért írja ki.Debugot még próbálgatom, de az Eclipsenek már 5. alkalommal "fagy le".
-
Lacces
őstag
válasz
Speeedfire #3081 üzenetére
Én az 'sout' -ot emlékszem, írod és gyorsan "tab" billt nyomsz, akkor kiírja az egész System.out.println-t.
De ott ha ctrl+space-t nyomsz, akkor csak egy ilyen kis suta intellisense van... az egészet nem dobja ki, hanem csak Osztályt vagy csak tagfüggvényeket. -
Speeedfire
félisten
Netbeans-ben nincs olyan opció*, mint eclipse alatt?
Elkezdem írni, hogy sysout, majd Ctrl+Space és kiírja, hogy systean.out xyz
Php alatt egyből dobálja fel a netbeans függvényeket.
netbeans 7.2, sdk 1.6 -
modder
aktív tag
Hali,
Glassfish egy teljeskörű java EE implementáció (bár van web profile-ja is, ami kicsit kevesebbet tud).
Springhez nem kell Java EE alapesetben, csak egy szervlet konténer, tehát a Tomcat teljesen megfelel. Elvileg egyébként egy teljesen alap Jetty is megfelel neki: -
Lacces
őstag
szerver bérlés miatt felmerült egy aprócska gond... melyik kiszolgálon érdemes egy Spring framework segítségével készül webalkalmazást használni?
Apache Tomcat vagy Glass fish? (Apache-ot azért favorizálom, mert akkor PHP-t is tudna kezelni). -
tocsa
senior tag
Ha szeretnétek új technológiákkal megismerkedni Java témakörben, illetve hasonszőrű emberkékkel kockulni, akkor nézzetek el a Budapest Java Bár oldalra. Itt jelentekzhettek az előadásokra később.
Korábbi előadásokat a Javaforum oldalon lehet elérni.
írtam egy logout-os bejegyzést is User Group-okról Tech meetup-okról, nemtom mikor kerül ki a logout-ra.
-
RexpecT
addikt
Milyen könyvet ajánlotok JAVA tanuláshoz?
Jelenleg az Agyhullám JAVA-t olvasom, de ajánlották a Java 2 útikalauz programozóknak 5.0 című könyvet is(ha valakinek megvan ez a könyv akkor megvenném). -
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.
-
Lacces
őstag
Aha, ha lehet tovább boncolgatnám a témát, valamit félre értelmezek szerintem... ahogy jobban megnéztem a példát.
Integer s = new Integer(8); // ez oké
Integer t = new Integer(8); // így s és t különböznek
Integer t = 8; // ez nem oké
Integer s = 8; // így s és t megegyezik
Ahogy nézem a forráskódot, mindig egy new Integer(i)-vel tér vissza, ami ugye objektum, de s és t az utolsó esetben megegyezik! Pedig ezek is objektumok. Vagy valahol a rendszer mélyén felismeri ezt JVM és oda hivatkoztatja az s és t változókat? -
Karma
félisten
Ez nem példakód, hanem a JRE forráskódja
-
Gyuri16
senior tag
Integer s = 8;
ilyenkor autoboxing miatt az Integer.valueOf(int) kerul meghivasra, ami cacheli a -128 tol 127ig terjedo szamokat, hogy gyorsabb legyen:private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
} -
Lacces
őstag
válasz
Superhun #3063 üzenetére
Ühüm, akkor fontos, hogy konstruktorral hozzam létre
Integer s = 8;
Integer t = 8;
Így meg a kettő ugyanaz lesz... egyébként ilyenkor s és t primitív? Vagy 2 külön hivatkozó változó, ami ugyanarra az Integer objektumra mutat a kupacban?Karma: "A gyakorlatban meg az Integer.valueOf-ban van ez a cache implementáció." Milyen cahce implementáció van ott?
Nekem ez új.
-
Karma
félisten
-
Igen. Az első két feltételnél primitívvé konvertálja az objektumokat és úgy hasonlítja össze, a 3.-nál viszont a == operátor azt vizsgálja, hogy a két referencia ugyanarra az objektumra hivatkozik-e, ami természetesen nem lesz igaz, így mindhárom feltétel mindig teljesül.
-
Lacces
őstag
Hm, autoboxing-nál melyik típus lehet az s és a t ? Integer? Immutabble-t hozok létre:
Integer t = new Integer(8);
Integer s = new Integer(8);
És ez esetben ugye 2 külön objektumot hozz létre a new kulcsszó miatt igaz? -
Hogy nem jutott eszembe
Köszi a válaszokat
-
Sziasztok!
Egy Java teszten a következő feladatot kaptam:
Definiálja az s és t változtókat úgy, hogy a következő ciklus végtelen legyen!
while (s <= t && s >= t && s != t) { }
Hát én ezen kiakadtam
Valakinek valami ötlet?
-
D4nte
csendes tag
Elég már csak abba is belegondolnod, hogyha nem lenne a megfelelőségi kapcsolat meg, akkor az alosztály ősosztály helyén való használata, szebb nevén helyettesíthetőség, nem tudna értelmesen működni.
hoppá válasznak akart menni Laccesnek
-
Lacces
őstag
Persze világos, öröklődést ismerem, polimorfizmus stb nyalánkság.
Csak amikor azt írta hogy "valódi altípus" meg "megfelelőségi kapcsolat van" akkor néztem, hogy most, miért? Van olyan alosztály, ami nem valódi altípusa az ősosztálynak? (esetleg nem felel meg neki?)
Meg létezhet olyan alosztály, aminek nincs "megfelelőségi kapcsolata" az ősosztállyal? Csak ha már itt van a könyvben, akkor már érdekel a téma nagyon, hogy mire gondolMár csak egy bekell kerülni egy céghez, ahol ezeket a praktikákat mindennap használható
-
Davs
tag
class A {}
class B extends A {} -> ez oroklodes
class C {
public A AObject = new A() ; -> ez kompozicio
}B objektum eseten minden public es protected dolgot (metodust es valtozot) oroklunk az A-bol. B-ben tudunk hozzatenni az A-bol orokolt dolgokhoz, de altalanosan elmondhato, hogy ami A-ban van (es public) az a B-ben is ott van, ezert lenyegeben mondhatni, hogy a "B" class "A" tipusu is. Mivel a B az A-tol orokol, az alabbi kodreszlet valid:
A Avaltozo = new B() ;Kompozicio eseten nem csinalhatsz ilyent: A Avaltozo = new C() ; -> mivel a C nem orokol az A-tol, egyszeruen a C csak tartalmaz egy A-t.
Oroklodes = "olyan, mint" -> B orokol A-tol -> B olyan, mint az A ( B az A altipusa)
Kompozicio = "van neki" -> C-ben van "A-kompozicio" -> C-nek van A-jaNemtudom, mennyire vilagos ebbol, szerintem rossz tanar lennek, de ha mar ennyit utottem a gombokat, azert elkuldom, hatha van benne valami ertheto is
(+ remelem nem tevedtem nagyot sehol se)
-
Lacces
őstag
Sziasztok!
Olvasom a hátékony java könyvet, nem rossz könyv, de néha hatalmas ugrásnak érzem.
Lenne kérdésem, most van egy kompozicíó vs osztály öröklés téma.Ezt nem teljesen értem:
"Az öröklés csak akor játszik igazián szerepet, amikor az alosztály tényleg valódi altípusa a szuperosztálynak. Más szavakkal egy B osztály csak akkor bővíthet egy A osztályt, ha a két osztály között megvan a megfelelőségi kapcsolat. Mielőtt B-vel bővítenénk A-t, tegyük fel a kérdést: Minden B megfelel A-nak? Nemleges válasz esetén a B esetleg tartalmazzon egy A privát példányt és az API legyen kisebb és egyszerűbb."
Mi a valódi altípus, és megfelelőségi kapcsolat? Nekem ezek a fogalmak nem igazán derültek ki.Meg a könyv azt írta, hogy a Kompozíció végül is a Decorator tervezési minta... Azzal megtudnám tanulni ezt a kompozíciót?
.
Ez sem rossz amit ír a könyv ír, de nekem akkor sem tiszta a példa alapján belekavarodok...És amúgy is érdemes használni a Kompozíciót?
-
Davs
tag
Hi!
Elkezdtem olvasgatni a concurrency temarol es lenne egy kerdesem. Sokszor van emlite a szovegben a single processor - multiple processor dolog. Egy ketmagos proci most akkor melyik csoportba tartozik? A ket mag tekintheto ket kulonallo processzornak? -
Q-Q-RI-Q
csendes tag
Sziasztok
Segítséget szeretnék kérni. Kaptam egy Huwei S7 Slim tabletet. Kedvenc online sakk játékommal szeretnék rajta játszani (flyordie) A belépéshez java telepítést kér a rendszer. Sajnos androidra sehol sem találok ilyen lehetőséget.
Nagyon megköszönném ,ha tudna valaki segíteni ez ügyben.
Köszi ..hali -
bads1
aktív tag
Hali, állandóan felugrál gépindulásnál a java updater és rohadtul idegesít, kell ez egyáltalán nekem valamire vagy leszedhetem? Már nem emlékszem hogyan került a gépre
.
-
pakriksz
őstag
baze hát kikészít az android fejlesztés.
Van az audiomanagernek egy ilyen metódusa hogy registerMediaButtonEventReceiver. Na most erre ráguglizok, és 5000 helyen mindig ugyan az jön ki, hogy ComponentName objektum a paramétere... Csakhogy "The method registerMediaButtonEventReceiver(ComponentName) is undefined for the type AudioManager"
-
Lacces
őstag
bővebben?
Ha megy az angol: itt egy rövid leírás a javac-ról.
Vagy ez magyar a jegyzet 9. oldalától a 11.oldalig olvasd el (a pdf lapon lévő oldalszámok alapján)
-
Lacces
őstag
Nem tudsz, le kell fordítani .class kiterjesztésűre. És ezt a .class fájlt tudod futattni.
Fordításhoz a javac-ot használd, beírod parancssorba például: javac xy.java
Javac-hoz kell a Java SDK, hogy a gépeden legyen.videó a használatról.
Esetleg használj valamilyen IDE-t (NetBeans, Eclipse)
-
wmati
addikt
Tudom amatör kérdés de .java kiterjesztésű filet hogy tudok lefuttatni?
-
Lacces
őstag
válasz
lakisoft #3027 üzenetére
Hali!
Az lenne a kérdésem, hogy milyen könyvet/online anyagot használsz a tudásod elmélyítéséhez?
Többieknek:
Kellene egy kis segítség definiáció értelemzésében.
Mit jelentnek a következő kifejezések, nekem nem tiszta"változtatható objektum", "végleges objektum", "végleges mező", én igazából itt a final kulcsszóra gondoltam, de nem vagyok benne biztos.
-
modder
aktív tag
válasz
lakisoft #3025 üzenetére
Az annotációk elég sok mindenre használatosak.
Nem tudom konkrétan melyik annotációra gondolsz, és azt sem tudom hirtelen, hogy a Java 2 EE mennyire használja őket. Volt egy névváltás javában, nagyon sokan még mindig J2EE-ként hivatkoznak rá, de Java 1.4-től fölfelé Java EE 5 és Java EE 6-nak nevezik őket, amik sokkal inkább használják a különféle annotációkat.
http://en.wikipedia.org/wiki/Java_EE_version_history
Az annotációk az egyfajta "convention over configuration" paradigma. Amit korábbi java verziókban konfigurációs fájlokban kellett megadni, most a forráskódba írható a definíció helyén. Persze a régi konfigurációs fájlban lévő beállítások precedencia előnyt élveznek az annotációkkal szemben. A haszon az egészben az, hogy sokkal kisebb erőfeszítésbe telik a fejlesztő számára, ha csak a forráskódot kell böngésznie, mint ha a forráskódot és mellé a konfigurációs fájlt is figyelemmel kell kísérni.
Például ott vannak az EJB-k. Régen a beans.xml-ben kellett definiálni minden osztályra, hogy az EJB-e vagy sem, definiálni kellett hozzá a remote és local interfészt, a bean nevét, egyebet. Ha van 10 EJB-d, és változik a neve az egyiknek, nem túl kényelmes külön a konfigurációs fájlban is böngészni utána, pláne, lehet, hogy egy kezdő programozónak eszébe sem jut.
A java EE-nek csomó olyan szolgáltatása van, amiket csak konfigurációs fájlokkal vagy annotációkkal lehet csak elérni. Pl EJB-k létrehozása, JPA Entity beanek, ManagedBean-ek, Servletek, Servlet filterek. egy nagy program esetén ez hatalmas konfigurációs fájlokat eredményezhet, amiket aztán külön kell karbantartani, hogy a kóddal konzisztens maradjon. Az annotációkkal azonban a kóddal együtt lehet kezelni.
Kb ennyi
-
lakisoft
veterán
Sziasztok,
Valaki nekem meg tudná mondani miért jó J2EE-ben használni az Annotations-t?
Előre is köszi. -
Lacces
őstag
Tényleg, itt mi a hiba? a static kulcsszó hiánya?
Most nincs semmilyen java előttem, és így fejben keresek megoldást.hunfatal: úgy tűnik, hogy a java 1.5-től elérhetőek az annotációk. (Az override az pedig annotáció...)
Java annotation - wikipedia -
Davs
tag
PetCreator:
//: typeinfo/pets/PetCreator.java
// Creates random sequences of Pets.
package typeinfo.pets;
406
Thinking in Java
Bruce Eckel
import java.util.*;
public abstract class PetCreator {
private Random rand = new Random(47);
// The List of the different types of Pet to create:
public abstract List<Class<? extends Pet>> types();
public Pet randomPet() { // Create one random Pet
int n = rand.nextInt(types().size());
try {
return types().get(n).newInstance();
} catch(InstantiationException e) {
throw new RuntimeException(e);
} catch(IllegalAccessException e) {
throw new RuntimeException(e);
}
}
public Pet[] createArray(int size) {
Pet[] result = new Pet[size];
for(int i = 0; i < size; i++)
result[i] = randomPet();
return result;
}
public ArrayList<Pet> arrayList(int size) {
ArrayList<Pet> result = new ArrayList<Pet>();
Collections.addAll(result, createArray(size));
return result;
}
} ///:~ForNameCreator:
//: typeinfo/pets/ForNameCreator.java
package typeinfo.pets;
import java.util.*;
public class ForNameCreator extends PetCreator {
private static List<Class<? extends Pet>> types =
new ArrayList<Class<? extends Pet>>();
// Types that you want to be randomly created:
private static String[] typeNames = {
"typeinfo.pets.Mutt",
"typeinfo.pets.Pug",
"typeinfo.pets.EgyptianMau",
"typeinfo.pets.Manx",
"typeinfo.pets.Cymric",
Type Information
407
"typeinfo.pets.Rat",
"typeinfo.pets.Mouse",
"typeinfo.pets.Hamster"
};
@SuppressWarnings("unchecked")
private static void loader() {
try {
for(String name : typeNames)
types.add(
(Class<? extends Pet>)Class.forName(name));
} catch(ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
static { loader(); }
public List<Class<? extends Pet>> types() {return types;}
} ///:~ -
Davs
tag
Hali!
A kovetkezo dologra szeretnek rakerdezni:PetCreator:
public abstract class PetCreator {
public abstract List<Class<? extends Pet>> types();
}ForNameCreator:
public class ForNameCreator extends PetCreator {
private static List<Class<? extends Pet>> types =
new ArrayList<Class<? extends Pet>>();
}A PetCreatorban a types() egy abstract metodus, nem? Akkor hogy lehet, hogy a ForNameCreator-ban mint sima field szerepel?
-
Frigo
őstag
SwingWorker lesz ami neked kell. Itt egy példa Progressbar-ral
-
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é
-
n00n
őstag
Ismét kellene egy kis segítség:
Adott kettő class közös package-ben:
programGUI és fileMasolas
programGUI.java ködrészlete:
//Progress bar:
JDialog copyModalDialog = new JDialog();
copyModalDialog.setTitle("Mentés másolása folyamatban");
pb = new JProgressBar(0, 100);
pb.setValue(0);
pb.setStringPainted(true);
JPanel panel = new JPanel();
panel.add(pb);
panel.setBorder(BorderFactory.createEmptyBorder(40, 75, 40, 75));
copyModalDialog.setContentPane(panel);
copyModalDialog.setResizable(false);
copyModalDialog.setModal(true);
copyModalDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
copyModalDialog.pack();
copyModalDialog.setLocationRelativeTo(null);
//fájlmásolás szál indítása:
fileMasolas tMasolas = new fileMasolas();
tMasolas.start();
//progress ablak megjelenítése:
copyModalDialog.setVisible(true);fileMasolas.java kód:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package proba;
import java.io.*;
class fileMasolas extends Thread {
public fileMasolas() {
}
public void run() {
File filein = new File("D:/adat.db");
File fileout = new File("D:/adat_new.db");
FileInputStream fin = null;
FileOutputStream fout = null;
long length = filein.length();
long counter = 0;
int r = 0;
byte[] b = new byte[100];
try {
fin = new FileInputStream(filein);
fout = new FileOutputStream(fileout);
while ((r = fin.read(b)) != -1) {
counter += r;
int bar = (int) (100.0 * counter / length);
MentesKeszitoGUI.pb.setValue(bar);
fout.write(b, 0, r);
}
} catch (Exception e) {
System.out.println("Hiba");
}
}
}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. Vagyis eltüntetni a copyModalDialog-ot?
-
Davs
tag
Java concurrency . Az elso link jonak tunik, az a hivatalos dokumentacio (ha jo angolul)
Amugy minden GUI-nal ugy van, hogy azon a szalon, ahol a JFrameket stb- t csinalod nem szabad komolyabb, sokaig tarto dolgokat csinalni, mert az igy leblokkolja a GUI-t (ami igy nem tudja ellenorizni, hogy tortent-e uj Event -billentyulenyomas, egerklikk, progressbar changge- stb.
-
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).
-
n00n
őstag
Szeretnék írni egy fájlmásolást progress barral, viszont nem jön össze. Mikor meghívom a lent látható fileMasolas metódust szépen megjelenik a JGrame, viszont a belseje "átlátszó" és csak azután jelenik meg, hogy végzett az utána következő fájl másolással. Valakinek ötlet, hogy mi nem jó?
private void fileMasolas() {
JFrame frame = new JFrame("Mentés másolása folyamatban");
pb = new JProgressBar(0, 100);
pb.setValue(0);
pb.setStringPainted(true);
JPanel panel = new JPanel();
panel.add(pb);
panel.setBorder(BorderFactory.createEmptyBorder(40, 75, 40, 75));
frame.setContentPane(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
File filein = new File("D:/adat.db");
File fileout = new File("D:/adat_new.db");
FileInputStream fin = null;
FileOutputStream fout = null;
long length = filein.length();
long counter = 0;
int r = 0;
byte[] b = new byte[1024];
try {
fin = new FileInputStream(filein);
fout = new FileOutputStream(fileout);
while ((r = fin.read(b)) != -1) {
counter += r;
int bar = (int) (100.0 * counter / length);
pb.setValue(bar);
fout.write(b, 0, r);
}
} catch (Exception e) {
System.out.println("Hiba");
}
} -
kispx
addikt
válasz
haxiboy #3002 üzenetére
Tehát akkor mellékeljük 10X a dll-eket 10 db program esetén? Nem fog egy kicsit sokat foglalni? (Megjegyzem, senki sem fog gondoskodni azok a dll-ek frissességéről és hibamentességéről). Ennyi erővel a telepítőbe is bele lehet a jre-t rakni. (És így csak 1X lesz felrakva)
"esetleg ha nincs net a gépén mit csinál?"
Ez az esetek hány százaléka? Tudatába, hogy a jre telepítője milyen nagy számmal dicsekszik, hogy annyi készüléken van már rajta. A maradék 0,000001%-ban ha már a dll-eket mellékelni tudja a fejlesztő a programjához, akkor már egy jre-t is tud.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- HP Elitebook 840 G3 laptop (14FHD/I5-G6/8GB/256SSD/Matricázott) - Akku X
- Asus Rog Strix Gamer laptop makulátlan állapotban
- ThinkPad T14 Gen4 14" FHD+ IPS érintő Ryzen 5 PRO 7540U 16GB 256GB NVMe ujjlolv IR kam gar
- 16GB-os SODIMM (notebook) DDR4 RAM bazár - nézz be, lesz, ami kell neked!
- HP 15-af105nh laptop (15,6FHD/AmdQuad/4GB/128SSD/Magyar) - Akku X
- BESZÁMÍTÁS! HP ZBook 15 G6 munkaállomás - i7 9850H 16GB DDR4 RAM 512GB SSD Quadro T2000 4GB WIN10
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RTX3070 8GB ZALMAN S2 TG Enermax 750W
- Csere-Beszámítás! Gamer PC Számítógép! R9 3900X / RX 6700XT / 32GB DDR4 / 1TB SSD
- BESZÁMÍTÁS! MSI Z370 i5 9500 16GB DDR4 512GB SSD RX6600 8GB Cooler Master MB510L Chieftec 500W
- BESZÁMÍTÁS! Gigabyte B550M R7 5700X 32GB DDR4 512GB SSD RX 7700 XT 12GB DeepCool CC560 Seasonic 650W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest