- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Vivo X200 Pro - a kétszázát!
- Okosóra és okoskiegészítő topik
- Rég várt frissítést kap az Android tárcsázója
- Poco F8 Ultra – forrónaci
- iPhone topik
- Xiaomi 17 Ultra - jó az optikája
- Apple Watch
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Nagy bemutatóra készül az Oppo
- Szaporodik és sokasodik a One UI 8.5
-
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 Tabletek, E-bookok Nyomtatók, szkennerek 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
-
QuarK
senior tag
Hi!
Vannak egyszerűbbek, például a Jedit (asszem így hívják). Ez annyira egyszerű, hogy nem lehet vele nem boldogulni. A kódoláshoz optimális, mert van benne highlight syntax, de semmi egyéb extra segítség. A kettő között (Jedit és Netbeans) nem tudom, hogy van-e köztes, gyors de egyszerű megoldás.Olyanra volna szükségem, amiben fordítani is lehet... Az se baj, ha olyan komplex, mint a NetBeans, de könyörgöm, ne Java-ban legyen megírva... Megőszülök, mire egy-két dolgot végrehajt...
-
concret_hp
addikt
-
Jester01
veterán
Hi!
Azokat szűri ki, amiket a validperators nem engedáélyet (így van az pl. hogy a 3-as tagnak nincs gyereke).
A linken található doksiban van egy rajz a fáról, ami szimbolizálja, hogy hogy megy a keresés. Ebből lehet látni, hogy miket szűr ki a program.
Az utolsó kérdésed, hogy visszacsinálja az előzőt, azt hogy érted?
[link]Khm, rossz a gráf a doksiban

A (3,2,J) nem megengedett állapot, hiszen többen vannak a kannibálok.
Kicsit átalakítottam a kódot, ebből látszik, hogy alapvetően jól működik, csak a sok listás varázslásban elvesztél. [link]
Megcsináltam a már érintett állapotok kiszűrését is. Neked majd a költségeket figyelembe kell venni, én most simán nullát írtam mindenhova.
Futás eredmény minta:
Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 1 0 )
Creating Level 1
(Misszionáriusok:2, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 2 1 )
(Misszionáriusok:1, Kannibálok:3, Hajó bal parton van?: false, isAllowed: false 3 1 )
(Misszionáriusok:3, Kannibálok:1, Hajó bal parton van?: false, isAllowed: true 4 1 )
(Misszionáriusok:2, Kannibálok:3, Hajó bal parton van?: false, isAllowed: false 5 1 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 6 1 )
Level 1 raw count = 3
(Misszionáriusok:2, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 2 1 )
(Misszionáriusok:3, Kannibálok:1, Hajó bal parton van?: false, isAllowed: true 4 1 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 6 1 )
Level 1 pruned count = 3
(Misszionáriusok:2, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 2 1 )
(Misszionáriusok:3, Kannibálok:1, Hajó bal parton van?: false, isAllowed: true 4 1 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: false, isAllowed: true 6 1 )
Creating Level 2
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 7 2 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: true, isAllowed: true 8 2 )
(Misszionáriusok:2, Kannibálok:3, Hajó bal parton van?: true, isAllowed: false 9 2 )
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 10 4 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: true, isAllowed: true 11 4 )
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 12 6 )
Level 2 raw count = 5
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 7 2 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: true, isAllowed: true 8 2 )
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 10 4 )
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: true, isAllowed: true 11 4 )
(Misszionáriusok:3, Kannibálok:3, Hajó bal parton van?: true, isAllowed: true 12 6 )
Level 2 pruned count = 1
(Misszionáriusok:3, Kannibálok:2, Hajó bal parton van?: true, isAllowed: true 8 2 )
[Szerkesztve] -
Jester01
veterán
Hi!
Na megint itt vagyok a bonyolult problémámmal. Szóval a forrsában lévő progival van továbbra is gondunk. Az első linken a legutóbbi verzió van, és nem értem a hiba okát. Elvileg azt csináljuk, hogy mindig egy ArrayList-be rakjuk a visszadott (Enumeration-ből már kiszedett) Successor-okat. Ez az első két szinten még jól is működik, mert pl kihagyja a 3-as szülőt, mert a hozzá tartozó Successor nem felel meg a validOperators metódusnak. Ezután azonban megbolondul. Minden Successoron végigmegy, és bár elvileg az Enumeration-ok üresek, mégis állandóan ad hozzá Successor-okat, így a 3. szinten már 15 Successor van, holott csak 5 kellene, hogy legyen. Remélem, hogy érthetően fogalmaztam. Azt kellene megtalálni, hogy miért nem fut le rendesen, ráadásul Exception-t is dob a végén. Elvileg ezeket a listákat berakjuk majd a főlistába (fésűs szerkezet), és a kilépési feltétel a (0,0 false) State lesz.
A második linken egy működő, de csak 2 szintig futó verzió van.
[link]
[link]így a 3. szinten már 15 Successor van, holott csak 5 kellene, hogy legyen.
Ja, hogy ebben akkor még benne vannak a duplikátumok. Oké, kezdem átlátni
MOD: jöhetsz MSNre, ha akarsz
[Szerkesztve] -
Jester01
veterán
Hi!
Azokat szűri ki, amiket a validperators nem engedáélyet (így van az pl. hogy a 3-as tagnak nincs gyereke).
A linken található doksiban van egy rajz a fáról, ami szimbolizálja, hogy hogy megy a keresés. Ebből lehet látni, hogy miket szűr ki a program.
Az utolsó kérdésed, hogy visszacsinálja az előzőt, azt hogy érted?
[link]Ha jól látom a műveletek mindegyike visszafordítható, mert eleget tesz a feltételnek. Tehát kapásból minden állapotból vissza lehet menni az előzőbe és ezt a validOperators engedélyezi is.
A belinkelt doksiban levő gráfot nézve a harmadik szinten lévő (3,3,B) állapotokat mind kihúzta, mert az a kiindulási állapothoz visz vissza.
A (2, 3, B) állapotot pedig két úton is elérte, a (2,2,J) és az (1,3,J) állapoton keresztül. A másodikat át is húzta: ''jó állapot, de már szerepelt'' megjegyzéssel.
Szóval ezeknek az eseteknek a lekezelését nem látom. Egyszerűbben fogalmazva: biztos, hogy rossz állapotok kerülnek a listába, és nem a duplikátumok miatt van benne túl sok elem? -
Jester01
veterán
Hi!
A lényeg az, hogy a successors metódus Enumeration-öket ad vissza, tehát ezekre nem hívhatod state.successors-t, hanem csak a Successor.state-re, amibpől egy Enumeration-be több is lehet. Ha meg tudod oldani, ki is veheted ezeket a listákat, és ha valahogy egyszerűbben megoldhatod, ha lehet. Elvileg így is működnie kellene, csak mégsem.
Ha van még kérdésed, hogy mi nem világos, kérdezz.Jah, még azt sem találtam meg, hogy a duplikátumokat hol szűröd ki.
Ez ugye egy gráf, ahol ugyanabba az állapotba több úton is el lehet jutni, illetve az is lehet, hogy a következő lépés pont visszacsinálja az előzőt. Ezt ellenőrzöd valahol? -
Jester01
veterán
Hi!
A lényeg az, hogy a successors metódus Enumeration-öket ad vissza, tehát ezekre nem hívhatod state.successors-t, hanem csak a Successor.state-re, amibpől egy Enumeration-be több is lehet. Ha meg tudod oldani, ki is veheted ezeket a listákat, és ha valahogy egyszerűbben megoldhatod, ha lehet. Elvileg így is működnie kellene, csak mégsem.
Ha van még kérdésed, hogy mi nem világos, kérdezz.Megnézted a hibát amit írtam?
-
Jester01
veterán
Hi!
Na megint itt vagyok a bonyolult problémámmal. Szóval a forrsában lévő progival van továbbra is gondunk. Az első linken a legutóbbi verzió van, és nem értem a hiba okát. Elvileg azt csináljuk, hogy mindig egy ArrayList-be rakjuk a visszadott (Enumeration-ből már kiszedett) Successor-okat. Ez az első két szinten még jól is működik, mert pl kihagyja a 3-as szülőt, mert a hozzá tartozó Successor nem felel meg a validOperators metódusnak. Ezután azonban megbolondul. Minden Successoron végigmegy, és bár elvileg az Enumeration-ok üresek, mégis állandóan ad hozzá Successor-okat, így a 3. szinten már 15 Successor van, holott csak 5 kellene, hogy legyen. Remélem, hogy érthetően fogalmaztam. Azt kellene megtalálni, hogy miért nem fut le rendesen, ráadásul Exception-t is dob a végén. Elvileg ezeket a listákat berakjuk majd a főlistába (fésűs szerkezet), és a kilépési feltétel a (0,0 false) State lesz.
A második linken egy működő, de csak 2 szintig futó verzió van.
[link]
[link]Az exception ezért van:
Enumeration eu=sc1.state.successors(sc1.state);
tmp.add(eu);
Itt ugyanis egy vektort adsz hozzá a tmp-hez, amiből később Successor-t akarsz kivenni.
Sajnos állatira nem látom át a list, list2, list3, tmp nevű változók szerepét
-
Jester01
veterán
Hi!
A feladat egyik része az, hogy a létrejött objektumok egy fát ábrázolnak, amelyek a misszionáriusok átkelését modellezik. Vannak rossz állapotok, és vannak jók. Azért kellenek a sajatSzam és szuloSzam, hogy tudjuk, melyik melyiknek a leszármazottja. Úgy terveztük, hogy ArrayList-be rakjuk a visszadott Enumeration-öket, és ez alapján tudjuk, hogy jutunk el a végső megoldáshoz. Még nem tuti, hogy sikerül, de ezzel is szívtunk, hogy nem vette fel a szülő számát. Elivelg ha csinálok set metódust, azzal be lehet állítani?ha csinálok set metódust, azzal be lehet állítani?
Persze. -
Jester01
veterán
Hi!
A dupla osztály valszeg automatikus quickfix, amit az Eclipse csinál, mikor nem talál megfelelő osztályt az interfészekben.
Tudok felratkni egy kb. hibátlan megoldást, de abban is van hiba, de ezt még kb. normálisan lehet olvasni.
Valamiért a szulo globális változó nem kapja meg a st.sajatSzam értéket. Valaki tudja, miért?
Kb. azt kellene csinálni, hogy az új objektum szuloSzam-anak fel kellene venni a regi objektum sajatSzam-at.
[link]
[Szerkesztve]A hiba véleményem szerint ott van, hogy a State interface tartalmazza a sajatSzam es a szuloSzam defininícióját.
Interfaces cannot directly model classes because they do not allow field variables. An interface may declare static final variables, but those are effectively constants, not variables. Abstract classes can declare field variables. Interfaces, on the other hand, can only support variables indirectly. Interfaces emulate field variables using wrapper methods for getting and setting the variables. Classes implementing an interface must include duplicate versions of the variable wrappers.
[link]
Ha az interface-t átírom így:public interface State {
public int getSajatSzam();
public int getSzuloSzam();
és implementálom a fenti metódusokat triviális módon:public int getSajatSzam() {
return sajatSzam;
}
public int getSzuloSzam() {
return szuloSzam;
}
akkor szépen továbbterjed. Kérdés, hogy ez volt-e a feladat
-
Jester01
veterán
Hi!
A dupla osztály valszeg automatikus quickfix, amit az Eclipse csinál, mikor nem talál megfelelő osztályt az interfészekben.
Tudok felratkni egy kb. hibátlan megoldást, de abban is van hiba, de ezt még kb. normálisan lehet olvasni.
Valamiért a szulo globális változó nem kapja meg a st.sajatSzam értéket. Valaki tudja, miért?
Kb. azt kellene csinálni, hogy az új objektum szuloSzam-anak fel kellene venni a regi objektum sajatSzam-at.
[link]
[Szerkesztve]Ahham, ez sokkal jobban tetszik mint az elõzõ. Nézem.
-
Jester01
veterán
Hi!
Nagyon bonyolult, és összetett problémával fordulok hozzátok. Valami miatt hibás a program. A hiba megoldás nem egyszerű, olyannyira, hogy eddig még senkinek sem sikerült.
Szóval itt van a forrás. Ha valaki meg tudja oldani, nagyon ügyes. Ha valami nem világos, nyugodtan kérdezzetek.
[link]Miért van két MissionariCannibaliState.java?
Egyáltalán hogyan lehet lefordítani, hiszen most cirkuláris referencia van benne.
Néhány helyen látszik, hogy kommentbe lett téve a jó (általános) verzió.
Töröld le az összes class-t, és csinálj egy tiszta fordítást. -
Diskcopy
tag
AWT-t nem tom, de swingben a GlassPane-el tudsz rajzolni a form elé.
-
Diskcopy
tag
-
andriscs
aktív tag
Hi!
Az lenne a kérdésem, hogy megoldható-e, hogy változókra hivatkozzak változókkal. Tehát pl van 15 JTextField-em, és szeretném mindegyikbe ugyanazt az éretéket bevinni. Na most vagy egyenként setText-telem őket, vagy keresek valami intelligensebb megoldást, pl, ilyesmit hogy
for(int x=0;x<15;x++)
tf+x.setText=''hello'';
Tudom, hogy így nem lehet, de valami ilyesmi megoldás kellene. Remélem, hogy valaki tud ebben segíteni. Valami hasonló kellene, mint ami PHP-ben van.
Hi!
Jót kérdeztem, mi?
-
Diskcopy
tag
Hi!
Hát itt az évszázad megoldása! Semmi drawImage meg egyéb szarságok
Nincs paint buzerálás. Komponensek a köbön 
Annyi kell, hogy file-két beolvasom, és utána egy JLabelbe belerakom, és akkor látszik amikor én akarom, mert setVisible false vagy true
Szóval itt a megoldás, 4 sor az egész.
[link]ImageIcon icon = new ImageIcon(''middle.gif'');
aztán JLabel-t meg simán kirakod. Ennyi is elég, én nem olvastatnám be feleslegesen.Ja és ez csak 2 sor
-
LordX
veterán
![[kép] [kép]](http://forum.doom9.org/images/smilies/cry.gif)
Minden fájl olvasás végén EOFException dobódik!!! (EOF = End Of File) -
Diskcopy
tag
Hi!
Kipróbáltam más módszert is, mégpedig a direkt egy kép beöltésére tervezett ImageIcon betöltővel. Ami nagyon bíztató volt: ''The ImageIcon constructor will block (i.e. not return) until either the image loads or the address is deemed invalid.'' (forrás: [link]
De sajnos még sehol a kép, és már fut a paint. Azt hiszem, hogy úgy meg lehetne oldani, ha a paint-tet elrejtem valami szálban, és csak invokeLater-rel indítanám el, de annyit meg nem ér az egész, hogy egy kép kedvéért szálakkal bajlódjak.
Szóval semmi változás, egyáltalán nem jelenik meg a kép.
Miért nem teszed ki egy panelra a képet? lásd itt: [link]
Amúgy meg szerintem működik az a waitForID, csak a paint-el lesz már megint gond, hogy hamarabb lezavarja a dolgot.. Prób meg a panelos dolgot, én mindíg így teszem ki. -
andriscs
aktív tag
Hi!
Kipróbáltam más módszert is, mégpedig a direkt egy kép beöltésére tervezett ImageIcon betöltővel. Ami nagyon bíztató volt: ''The ImageIcon constructor will block (i.e. not return) until either the image loads or the address is deemed invalid.'' (forrás: [link]
De sajnos még sehol a kép, és már fut a paint. Azt hiszem, hogy úgy meg lehetne oldani, ha a paint-tet elrejtem valami szálban, és csak invokeLater-rel indítanám el, de annyit meg nem ér az egész, hogy egy kép kedvéért szálakkal bajlódjak.
Szóval semmi változás, egyáltalán nem jelenik meg a kép.
-
andriscs
aktív tag
Hi!
Megvan a megoldás. Az volt a hiba, hogy a főablak méretet beállítottam, és utána maximalizáltam, így a paint csak addig tudta rajzolni a képet, amig az ablak setSize-a engedte neki. Most viszont jó. De újabb hiba van. Most nem rajzolja ki elsőre, hiába van MediaTracker, meg WaitForID, nem használ. Erre valami ötlet?
Hi!
100%, hogy nem működik a MediaTracker waitForID-ja, mivel még sehol a kép, de már az mt.checkID-ja true-t dob, tehát ezzel a módszerrel nem hiszem, hogy menni fog a kirajzoltatás elsőre. Valami mást kell keresnem.
-
Diskcopy
tag
Hi!
A MediaTracker-es rész konkrétan így néz ki, mindent kipróbáltam, de nem jó:
background = Toolkit.getDefaultToolkit().getImage(''kep.jpg'');
mt = new MediaTracker(this);
mt.addImage(background, 0);
try{
mt.waitForAll();
mt.waitForID(0);
}catch(Exception e){Thread.currentThread().interrupt();
}
Aztán még a paint-be is beleraktam:
if(mt.checkAll()==true)
g.drawImage(background,x.width/2-350,x.height/2-250,this);
Van más ötleted?MediaTracker mt = new MediaTracker(this);
mt.addImage(img,0);
try{ mt.waitForID(0); } catch .... elég ennyi, nem kell waitForall, csak ha több van.
a paintnél meg mt.checkID(1)==true, ha betöltötte.
az lehet szerintem, hogy a mérete nem annak megfelelő, amekkoránál kirajzolod., vagy próbáld meg egy panelra rátenni.. tehát akármilyen class extends JPanel, konstruktorban beolvasni, paintComponentben meg gr.drawImage..., és akkor ezt a panelt valahol kitenni., lehet valami más miatt esik össze.
Ha méretezni kéne, akkor ujKep=img.getScaledInstance(szelesseg, magassag,Image.SCALE_FAST);
Azt próbáltad, hogy az 1,1 koordinátákba rakatod ki? tehát nem így: x.width/2-350,x.height/2-250 hm? -
Diskcopy
tag
MediaTrackernél WaitForId-t csinálsz?
tehát MediaTracker tr = new MediaTracker(this);
tr.addImage(img,0);
try { tr.waitForID(0);} catch(InterruptedException e){ stb stb }
JScrollPane méretezés: scrollPane.setPreferredSize(new Dimension(400,100));
esetleg még autoResizeMode-ot állítsd át AUTO_RESIZE_OFF -ra hátha.
[Szerkesztve] -
andriscs
aktív tag
Hi!
Van egy újabb kérdésem. Használok JTable-t, amit beleraktam egy ScrollPane-be, viszont hiába próbálom átméretezni a ScrollPane-t, nem lehet. A tábla dinamikusan növekszik, de először még alig van benne adat. Szóval elég gázul néz ki, hogy egy szürke háttér figyel a tábla alatt. Aki esetleg tud rá megoldást....
[Szerkesztve] -
andriscs
aktív tag
Hi!
Igazad van, az kimaradt, így már nem lesz szürke, viszont van még egy gondom, Amikor elindul a progim, már akkor szeretném, ha ott lenne a kép, de hiába hívok a konstruktor végén repaint()-et, csak akkor jelenki meg, ha valami ''fizikailag'' előidézi, hogy újrarajzolódjon (pl. ha ablakot váltok). Szóval hogyan lehet azonnal kirajzoltatni?Hi!
Erre megtaláltam a választ, MediaTrackert kell használni. Persze az sem működik tökéletesen, ugyanis a legelső kirajzolásnál csaka kép 2/3-át rajzolja ki. Ilyet se láttam még. Szóval még javítgatnom kell.
-
Diskcopy
tag
a paintnél meghívtad a super metódust? super.paint(g); -t? mármint mikor rajzolsz azelőtt.
-
andriscs
aktív tag
Hi!
Megvan, miért volt szürke minden, azért, mert belenyúltam a paint metódusba. Ha azt kihagyom, akkoe szépen kezeli ezeket. Viszont így nem tudok képet kirakni a háttérben. Valahogy máshogy megoldható a kép kirajzolása paint nélkül? -
LordX
veterán
Hi!
Megvan a hiba. Elfelejtettem hívni a panelek setVisible metódusát true-val
Viszont van egy következő hibám. Itt a kód:
FileInputStream fi=new FileInputStream(''xyz.dat'');
DataInputStream in = new DataInputStream(fi);
while (in.available() !=0)
{
// Print file line to screen
System.out.println (in.readUTF());
}
in.close();
Természetesen try-catch blokkban van. A helyzet az, hogy Exception-t dob, mégpedik a következő sokatmondó hibával: null
Ez mit jelent? Hogy nem létezik a file? Mert akkor a Windows és a Java számára a két fogalom nem ugyanaz. A file olvasható, létezik, mi lehet a hiba?Milyen típusú Exceptiont dob?
-
andriscs
aktív tag
Hi!
Kipróbáltam mindent, amit mondtál. Azt elfelejtettem mondani, hogy egyszer végrehajtódik a panelremove és az add, csak utána nem történik semmi. Ami működött, az a pack volt, ezzel viszont van egy bazi nagy gond. A JFrame-em maximizálva van, és elég hülyén néz ki, hogy pack után egyből max méretre rakom, eléggé furcsán néz ki, ahogy hírtelen kinagyítódik az ablak. Szóval meg lehet oldani valahogy ezt a pack kikerülést?
[Szerkesztve]Hi!
Megvan a hiba. Elfelejtettem hívni a panelek setVisible metódusát true-val
Viszont van egy következő hibám. Itt a kód:
FileInputStream fi=new FileInputStream(''xyz.dat'');
DataInputStream in = new DataInputStream(fi);
while (in.available() !=0)
{
// Print file line to screen
System.out.println (in.readUTF());
}
in.close();
Természetesen try-catch blokkban van. A helyzet az, hogy Exception-t dob, mégpedik a következő sokatmondó hibával: null
Ez mit jelent? Hogy nem létezik a file? Mert akkor a Windows és a Java számára a két fogalom nem ugyanaz. A file olvasható, létezik, mi lehet a hiba? -
Diskcopy
tag
Hi!
Újabb érdekes probléma. Panelekkel dolgozom, és néha egyikre van szükségem, néha a másikra. Ilyen esetben a Container-ből remove-olom a nemszükséges panelt, hozzáadom az újat, hívok egy validate-et, és mindenki happy. Ez eddig működött, most azonban nem. A Java figyelmen kívül hagyja a remove utasítást, és így az add is értelmét veszti. Mutatok egy példakódot.
container.remove(jpanel1);
container.add(jpanel2);
validate();
Ez annyit csinál, hogy ottmarad a jpanel1, látszólag, de annak a kompnenseihez nem férek hozzá (tehát inaktív), és a jpanel2 nem látszik. Valami ötlet, hogy eltűntessem? (CardLayout-ra túl macerás lenne áttérnem).Első ötleteim: Kéne pack()-olni a frame-et, vagy legalább resizeolni, lehet azért nem jó(mármint a remove után), 2) nem mondod meg, hova pakolod a cuccost az add után, pl ( BorderLayout.NORTH.. ilyesmikre gondolok(nemtudom milyen layout managert használsz)). 3)Exceptiont nem dob az add-removenál valahol, próbáld meg elkapni, mert ez is lehet. 4) repaint esetleg?. Több így egyelőre nem ugrik be, de kevés is a kód, hogy lássam mi az ábra.. próbáld végig. Ha nem megy, részletezd kicsit bővebben.
-
andriscs
aktív tag
Hi!
Na ilyet se láttam még. 2 programmal ellenőriztettem, de nem tudta kiszűrni a hibát, pedig tutira szintaktikai hiba van, valahol hiányzik egy }.
Valaki legyen olyan rendes és találja meg, hogy hova kell, mert én lassan agybajt kapok. Amúgy a hiba: Incompatibel types. found: java.lang.String, required: com.sun.java.blablabla.String, persze ez csak kamu, tuti hogy hiányzik a zárójel.
private void showData()
{
String str1;
String str2;
String str3;
String str4;
String str5;
int str6;
int str7;
//ArrayList list=new ArrayList();
JLabel title=new JLabel(''label'');
gui1.add(title,BorderLayout.NORTH);
try
{
st=con.createStatement();
String query=''select *...'';
rs=st.executeQuery(query);
System.out.println(''...'');
while(rs.next()){
int theInt= rs.getInt(''id'');
str1 = rs.getString(''ido1'');
str2 = rs.getString(''ido1'');
str3 = rs.getString(''szam2'');
str4 = rs.getString(''es1'');
str5 = rs.getString(''be2'');
str6 = rs.getInt(''me3'');
str7 = rs.getInt(''ossz1'');
String [][] datas=new String[1][7];
datas[0][0]=str1;
datas[0][1]=str2;
datas[0][2]=str3;
datas[0][3]=str4;
datas[0][4]=str5;
datas[0][5]=String.valueOf(str6);
datas[0][6]=String.valueOf(str7);
adatok=new JTable(datas, columns);
adatok.setColumnSelectionAllowed( true );
adatok.setBackground(custom);
gui1.add(adatok);
}
}
catch(Exception ex) {
JOptionPane.showMessageDialog(this,
''Hiba történt: ''+ex.getMessage(),
''hiba'',
JOptionPane.ERROR_MESSAGE);
}
}Hi!
Megvan a hiba, az import deklarációknál kedves Netbeans berakta azt a com.sun-os string definíciót, persze hogy inkompatibilis lett. Amúgy ennek a Netbeans-nek van pár rejtett hibája. Például amikor []-et írok, akkor megáll a két [ között, és semmivel nem lehet kimozdítani onnan, csak ha egérrel elkattintok onnan. Eléggé idegesítő dolog. A másik az intelliSense, ami nem nagyon műkdöik, csak nagy rábeszélésekre, például állati érzékeny a kis és nagybetükre (nem mindegy, hogy így kezded jlab vagy JLab). Szóval még mindig azt gondolom, hogy az IBM Eclipse-e sokkal kezelhetőbb, egyetlen hátránya, hogy nincs benne default visual designer.
-
Diskcopy
tag
Hi!
Technikai jellegű a kérdésem: aki ismeri a NetBeans 4.1-et, legyen szíves mondja meg, hogy hol tudom beállítani, hogy milyen külső jar file-okat használjon a fordításnál ( a file classpath-ba való beírása nem oldja meg a problémát). Eclipse-ben sikerült már összehoznom, de NB-ben még nem. Ha valaki segítene, megköszönném.Hello!
Asszem mountolni kell:
lásd:
If your code depends on any resource libraries, you have to mount the libraries in order to add them to the project's Java classpath. Resource libraries can be contained in regular directories or, more commonly, in JAR files. You can mount a JAR file as a filesystem in the IDE by right-clicking the root filesystem node and choosing Mount > Archive File. Mounting a resource library also makes all of its contents available for code completion.
innen: Bővebben: link -
BaLinux
tag
-
andriscs
aktív tag
Hi!
A következő dolog nem működik, nem rajzolja újra az ablakot, csak elveszi a regi panelt. Miért?
public void ujfelulet()
{
JPanel ujpanel=new JPanel();
ujpanel.setLayout(new GridBagLayout());
Color sajat=new Color(230,153,255);
ujpanel.setBackground(custom);
container.remove(regipanel);
container.add(ujpanel,BorderLayout.CENTER);
repaint();
}Hi!
Megvan a hiba, hiányzott a validate(). -
BaLinux
tag
-
BaLinux
tag
Visual Editor: Bővebben: link
Amúgy kézzel sem nagy cucc, ha kitapasztalod kicsit hogy mit tud. Gyakorlatilag komponensenként max 2-3 sorban beállíthatod a paramétereket, ennyi szokott lenni.
[Szerkesztve] -
Diskcopy
tag
Hi!
Most untam meg, úgyhogy ezt is megkérdezem. hogyan lehet azt megcsinálni, hogy ott legyenek a cuccok, ahol én akarom??
Mert ugye ha az ember LayoutManager-t használ, akkor a méretet ignorálja a Java, és pl ez: BorderLayout.CENTER szépen kitölti az ablak 97%-át. holott én egy nyambvad rohadt csíkot akarok, amit vagy úgy érek el, hogy NORTH-ba rakok, vagy SOUTH-ba, de azok meg dock-olnak az ablak széléhez. Ha EAST vagy WEST van, akkor függőleges gombokat kapok meg TextField-eket. Ha nem használok Layout-ot (ami a legjobb lenne), a Java akkor is ignorálja a setLocation illetve setBounds metódusokat. Szóval mi is a jó megoldás? FlowLayout kiütve, mert sorba tudja csak rakni, GridLayout meg csak akkor működik ha a x a objektumot akarsz rárakni, de nekem egymás alatt kellene három. GridBagLayout annyi munkával járna, hogy akkor inkább berakok egy képet. Vagy az a megoldás, hogy egy BorderLayout.CENTER-be egy panel, ami BorderLayout-os és annak a CENTER-jébe egy újabb panel, ami szintén BorderLayout-os és annak a CENTER-jébe egy panel, ami az alsó dolgot tartalmazza. és a külsőnek a NORTH-jába e másik, a legkülsőbb panelnek a NORTH-jába pedig a 3. dolgot. Ennél egyszerűbbet még nem találtam. Aki tud jobbat, írjon!Hello!
Hát pedig ezek vannak csak.. Vagy SetLayout(null);-t használsz, vagy GridBagLayout-ot.. azt mondod sok melóval jár, ami mondjuk igaz, de vannak nagyszerű tervezők, amik nagyon frankón megcsinálják, és nem is nagyon gányolják össze a kódot (mondjuk netbeans 5.0 beta) vagy akár eclipsehez is van plugin külön tervezéshez..nagyon jól be tudod állítani mekkora területet töltön ki, mennyi legyen a behúzás, miegymás. Jobbat nem tudsz csinálni.. Null layoutnál meg ugye az a probl, hogy ha átméretezed, akkor már nem olyan jó dolog, mivel a layoutmanagernek az lenne a lényege, hogy átméretezésnél is nagyon szépen elrendezi a dolgokat.plusz ugye mindegyiknél meg kell adni a pozíciót, illetve a komponens méretet.. gányolás. De tényleg a gridbaglayout a legjobb(legnehezebb) de nagyon jól kinéző cuccot tudsz vele csinálni, legtöbb programban ezt használják. Ha megszoktad, meg megérted, akkor már nem lesz nehéz tervezni(akár még IDE nélkül sem). -
Diskcopy
tag
Hi!
Gyors válasz kellene egy egyszerű kérdésre. Az alábbi kód Swing-et használ, de valami miatt a paintComponent(Graphics g) metódus nem iazán fut le, vagy legalábbis nem látszik, ami történik. Tudom, hogy valami nagyon triviális dolog miatt nem megy, de nem jövök rá.
Itt a kód:
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
class Program extends JFrame
{
Container panel;
JPanel alpanel1;
JButton connectBtn;
JLabel cim;
JTextField url;
String input;
Color custom;
public Program(String title)
{
panel=this.getContentPane();
setTitle(title);
custom=new Color(0,153,255);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,600);
alpanel1=new JPanel();
panel.setLayout(new BorderLayout());
alpanel1.setLayout(new BorderLayout());
connectBtn=new JButton();
url=new JTextField();
cim=new JLabel(''Cim'');
cim.setSize(200,50);
cim.setLocation(370,5);
connectBtn.setText(''OK'');
connectBtn.setSize(60,30);
url.setSize(300,50);
url.setLocation(200,400);
this.getContentPane().add(panel);
panel.setBackground(custom);
panel.add(alpanel1,BorderLayout.SOUTH);
panel.add(cim,BorderLayout.NORTH);
alpanel1.add(url,BorderLayout.CENTER);
alpanel1.add(connectBtn,BorderLayout.EAST);
connectBtn.addMouseListener(new MyMouseAdapter());
//setVisible(true);
}
class MyMouseAdapter extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
}
}
protected void paintComponent(Graphics g)
{
g.drawString(''eef'',20,30);
Graphics2D g2d = (Graphics2D)g;
g2d.drawString(''hi'',10,10);
g2d.setPaint(Color.RED);
Ellipse2D.Double oval=new Ellipse2D.Double(20,20,20,20);
g2d.draw(oval);
}
public static void main(String args[]) {
Program ablak=new Program(''Program'');
ablak.setVisible(true);
}
}Hello!
Több hiba is van benne, de az ok amiért nem jelenik meg a PaintComponent, az az, hogy így kéne megcsinálni:
public void paint(Graphics g) {
super.paint(g);ezzel kezd, innen folytatódik tovább pl a rajzokkal. A betűket is túl közel akarod kiíratni
g.drawString(''eef'',100,200);legyen mondjuk itt, ha látni is akarod.. Aztán...van egy sor...:
this.getContentPane().add(panel);
ez meg az, hogy a ContentPanehez akarod hozzáadni a ContentPane-t ami nem jó, kommentezd ki.
-
andriscs
aktív tag
Hi!
Használni szeretném a Java JDBC részét, egy MySQL adatbázishoz szeretnék csatlakozni. Amit tudok, hogy kell hozzá egy jar file, amit letöltöttem (jdbc2_0-stdext.jar). Ennek ellenére ha elindítom a progit, exception-t dob (Exception: com.mysql.jdbc.Driver). Hova kell másolni a jar file-t? Én belenyomtam a Java könyvtár lib alkönyvtárába. Egyéb ötlet?Hi!
Sikerült összeköttetést csinálnom az adatbázissal, ennek a leírásnak a segítségével. Ha esetleg valakinek szüksége lenne rá...Bővebben: link
[Szerkesztve] -
maszat
senior tag
Hi!
Mindenképpen String tömböt akarsz használni? Mert esetleg érdemes dinamikus listával csinálni (ArrayList például). Asszem van még más dinamikus is, de én ezt szoktam használni. Kb. 2 perc alatt fel lehet fogni a használatát, és mivel arra tervezték, hogy Object-eket tároljon, minden belefér
Szerintem jó dolog, bár annak nem néztem utána, hogy mennyivel erőforrásigényesebb, mint a hagyományos megoldás.Köszi, próbálkozok.
Amúgy azt szeretném megvalósítani, hogy adott két txt fájl, mindkettőben szavak vannak(minden sorban egy) és a program hozzon létre egy txt-t melyben azok a szavak vannak, melyek mindkét fájlban előfordulnak. -
Hujikolp
őstag
Ok. De nem gond ha nincs benne?
[Szerkesztve] -
Protezis
őstag
Köszi, beadtam a 2 osztályos verziót. Remélem ilyenen nem fog szőrözni

-
BaLinux
tag
Hi!
Azt hittem, hogy így gondoltad a PrintStream konstruktorát, hogy egy OutputStream-et fogad paraméterként. Ezért ezt írtam:
OutputStream out=new OutputStream();
PrintStream printer=new PrintStream(out,false,''852'');
És utána ezt akartam csinálni: printer.print(''aéáéáő'');
Ezek szerint nem így kellett volna.
Korrekt, csak az a kérdésem hogy az out az szerinted minek a kimenete lenne?
Az így lóg magában és megy a szöveg az éterbe, mi? 
Gondoltam vágod, hogy a wrappelendő objektum a System.out vagy System.err, vagy bármilyen létező OutputStream. -
BaLinux
tag
Hi!
Köszi az építő jellegű hozzászólást, de valahogy a Java nem szereti ezt az OutputStream jellegű dolgot, azt írja rá, hogy nem tudja inicializálni, mert nem egy konkrét osztály. Megnéztem, a kontruktora paraméter nélüli, elvileg semmi akadály nincs, hogy létrehozza, de nem tudja mégsem.Ezek szerint nem értetted amire gondolok. Természetesen nem egy OutputStream-et kell létrehoznod, hanem a PrintStreamet!
new PrintStream(System.out, false, ''852'');
Én csak a PrintStream konstruktor paraméterezését vágtam be ide...
mod: megnéztem, az OutputStream osztály absztrakt (és mért ne lenne az, nincs hozzárendelve semmiféle ''kimeneti eszköz'', így natúr), így természetes hogy nem lehet konstruálni. Pontosan mit akartál csinálni?
[Szerkesztve] -
maszat
senior tag
Hi!
Itt a válasz, bocsi, hogy angolul:
Setting up the path
Windows 2000/XP users may set their path by right-clicking on 'My Computer' and selecting
'Properties'. Under the 'Advanced' tab, there is a button that allows you to set the 'Environment
variables'. Click on this and alter the 'Path' variable so that it also contains the path to the
Java executable. For example, if you have installed Java in c:\jdk and your path is currently set
to C:\WINDOWS\SYSTEM32, then you would change your path to read C:\WINDOWS\SYSTEM32;c:\jdk\bin
When you open a new command prompt, it will reflect these changes and allow you to run java
programs by typing ''java''. If you have installed the SDK, then you will also be able to run
''javac'' to compile stuff. Windows 95/98/ME users may find that their path variable is stored in
a different place. Edit the c:\autoexec.bat file and add the following line at the end:
SET PATH=%PATH%;c:\jdk\bin
(This also assumes that you have installed Java in c:\jdk)
Linux, UNIX, Solaris, FreeBSD users must set their PATH variable to point to where the java
binaries have been installed. Please refer to your shell documentation if you have trouble
doing this. For example, if you use bash as your shell, then you would add the following line to
the end of your .bashrc: export PATH=/path/to/java:$PATHKöszönöm, ez jól jött. Nem, semmi baj, hogy angol. Én békésen megvagyok vele, mert nagyjából étrem
Mindenki másnak is köszönöm -
BaLinux
tag
Jah, elcseszett windózos konzol. A System.out-ot (vagy .err-t) wrappeld egy ilyenbe:
PrintStream(OutputStream out, boolean autoFlush, String encoding)
ahol az encoding legyen ''852'' asszem.
Illetve válogathatsz innen: Bővebben: link
-
yksz
aktív tag
-
Badb0y
addikt
Hi!
Lehet, hogy valami driver-rel ütközik. Nem lehet, hogy már valamivel együtt felkerült a JRE? Például Opera böngésző fel tudja telepíteni, utána már nem kell újra. Ha valamelyik driver-rel ütközik, akkor azt megkeresni nem 1 perc, szóval lehet, hogy jobban (?) jársz, ha tényleg formázol, talán az rövidebb idő. Szívesen segítenék, de ilyen hibával még nem igazán találkoztam.
Van már fennt a gépemen JRE 2 is mert fenn van egy 5.0ás asszem, meg mivel nem megy a JBuilder kénytelen voltam SDK-t is feltenni így annak is fennt van a jre-je 1.4.2.07, mert azzal legalább le tudom futtatni a progikat.
-
Badb0y
addikt
Az a baj, hogy semmit nem tesz az esemény naplóba telepítéskor és amikor leállítom akkor se

-
Badb0y
addikt
Van egy 600 megás azt is próbáltam meg egy sulis is. Csökkentetbe feltelepül meg minden. Itt biztos vmi progi összeütközés lesz. Úgyhogy ráadom a fejem egy fomrázásra

-
yksz
aktív tag
-
beeboy
addikt
-
BaLinux
tag
Így van. Ha ''nagyon átlaguserrel'' van dolgod, úgyis készítesz installert, ami beállítja az egészet, tehát bármennyi dolgot kell beállítani, nem számít.

Ja igen, a .jar egy .zip átnevezve, érdemes tudni, nem valami spéci formátum. -
stann
tag
Siekrült megoldanom, Argumentumok használatával.
De tegnap megint találtam egy érdekes dolgot:
-Írtam egy Min-max progit(a beütött karakterek közül kiírja a min-t és max-ot). Ha Eclipse-ben futtatom, eredménynek kiír egy random számot(ált. 1), viszont ha parancssorosan futtatom/fordítom cmd-vel(javac, java), kiírja rendesen, h. a Legnagyobb, legkisebb elem mekkora. Szóval a progi működik, csak Eclipse-ben nem tetszik neki valami, a beállításokhoz sem nyúltam. Ötlet?
Ígyí meg már nem merem magam rábízni, ki tudja, mikor ír ki hülyeséget!
-
stann
tag
Az Eclipse-ben be kell még állítani valamit?
Én most kezdtem Javazni, de itt még nem sikerült(Eclipse-ben) megoldanom, hogy hogyan kell a progikat paraméterrel indítani.
Pl. amikor parancssorban futtatásnál a sor végére írom, hogy 10 20 30, és így dönti el, hogy lehet-e mondjuk 3szög! -
Badb0y
addikt
Anyáááám. Nagy marha vok. Az opera mindig feltelepíti ezt, de az utolsó formázásnál most az 1* direkt nem telepítettem fel


El is indul az eclipse
Viszont ennek nem olyan a kezelőfelülete mint a JBuildernek. Elvileg ugyanazt tudja? Vagy tulajdonképpenn mi is ez? -
Badb0y
addikt
igen tudom. Ezek voltak a hibák Bővebben: link -
Badb0y
addikt
Hi!
Ez attól függ, hogy milyen a program. Használtad már valamelyik korábbi verzióját? Mert ha lehet vele sima Java kód alapján programozni (ez mondjuk elég valószínű), akkor érdemes próbálkoznod vele. Hogy miért nem indul el, annak 1000 oka lehet. Lehet, hogy hibás a forrás, ahonnan telepíted, de az is lehet, hogy valamilyen programmal nem fér össze (lehet, hogy valamilyen rezidens program), szóval nehéz így kiszűrni.Próbáld meg más haverodnál/ más gépen telepíteni, és megnézni, hogy működik-e. Ha ott elindul, akkor a hiba a te készülékedben van.Ütközik vmivel csak azt nem tom mivel

Mert csökkentettbe menne. -
Badb0y
addikt
Hi!
Az mit jelent, hogy nem lép be? Nem indul el? Nem ismerem a programot, de úgy tudom, hogy ez olyasmi, mint a VisualC++, tehát formokra kell csak dobálni a dolgokat, nem kell igazából a vizuális megjelenést kódolni. Ez kezdőknek nem túl jó. Inkább egy higlight-os progit használj, amiben csak kódot lehet írni (nálunk a JEDPlus 2-t ajánlják, asszem ingyenes). Azt gondolom, hogy hasznosabb ilyen egyszerű progival kezdeni.Bővebben: link
csökkentett módba meg elindul
-
Badb0y
addikt
Okés

Leírnád mailba??? Mert megbukni nem akarok, és holnap mennék megvenni.
JA és remélhetőleg kezdőknek legyen
THX -
andriscs
aktív tag
Hi!
Nem szórakoztam, simán felraktam jar file-ként a játékot, onnan le lehet tölteni. Várom az észrevételeket és javaslatokat. Az MI része még nincs kész (mint azt bele is írtam a játékba). Nemsokára megírom a hálózati részt is, akkor lehet neten is játszani. Kis türelmet...
Bővebben: link
[Szerkesztve]Hi!
Aprócska technikai probléma miatt egyelőre nem tölthető le a játék, ugyanis a jar file futtatása után nem tölti be a képeket, és ahogy a neten olvasom, rengeteg embernek ugyanez a problémája. Hiába használnak relatív útvonalakat, a képek nem töltődnek be. Azt hiszem, ez ''felsőbb'' (értsd SUN) probléma, mivel megoldást még nem találtam rá. Sajnos az Eclipse JAR csomagolója is mindenre jó, csak arra nem, amire kellene (viszont jól tömöríti a NEM Java állományokat
) Szóval ha sikerül megoldani valakinek a problémát, és én is hallok majd róla, akkor elérhető lesz. 
-
Kr1xX
tag
Hi!
Addig is míg megoldjuk a négyzetháló problémát, valaki elárulja nekem, hogy ha van egy Frame, aminek beállítok egy képet háttérnek, és a Frame déli részére berakok egy panel-t, amin van két gomb, akkor hgoyan tudok a panelra is képet rátölteni? Mert ugye amikor a képet kirajzoltatom a g.drawImage(img,0,0,this)-el, akkor a háttérre rakja ki a képet. Viszont ha ezt használom g.drawImage(img,0,0,p), ahol p a panel, akkor miért nem rajzolja rá a panelre?Őszintén szólva még soha nem használtam panelt (nem is tudtam hogy van rá lehetőég), így hát ebben nem tudok segíteni. Ha meg van a megoldás, akkor azért publikáld, mert érdekel!

-
andriscs
aktív tag
Hi!
Rájöttem, hogy miért nem találta meg az átlókat. Azért, mert a lefele balról jobbra függvény csak a mátrix felső háromszögét járja be, az alsót nem, és ugyanez igaz a másik irányra is. Szóval ezt kellene még megoldani. De az lehet, hogy már holnapra marad.
-
andriscs
aktív tag
Hi!
Most megtettem azt, hogy String helyett int tömböt használok, most viszont nem mindig találja meg az átlókat a program. Érdekes... -
andriscs
aktív tag
Hi!
Nem tudtam megállni, és teszteltem, úgy néz ki működik. Ahogy átnéztem a kódodat, rájöttem, hogy az enyém túlságosan körülményes, a tied viszont lényegretörő. Az egyik tanáromnak is írtam már, aki azt ajánlotta, hogy vigyázzak, mivel én String tömben tárolom a dolgokat, és a sima == csak referencia, inkább használjak equals() tagfüggvényt, mert az ő szavaival élve a ''programom egy időzített bomba''. Remélem, hogy azzal már rendesen működni fog, most már csak egy alap mesterséges intelligencia kell bele, aztán mehet a dolog.
Apró megjegyzés, hogy rájöttem (mivel ma tanultuk
), hogy hogyan lehet képet betölteni (kicsit eltér az Applet-ek képbetöltésétől): Szóval valahogy így kell:
Image img=Toolkit.getDefaultToolkit().getImage(''kep.jpg'');
utána pedig paint()-ben g.drawImage(img,0,0,this). Apró szépséghiba, hogy a kép nem jelenik meg. Vajon miért nem? Add metódus nincs képekhez, requestFocus() nem kell neki, tehát elvileg már látnom kellene a képet. De mégsem látok semmit. Ötlet?Hi!
Nem akarom elvenni a kedved, hogy újra átnézd, de ezt is be lehet csapni, mert sikerült olyasmiket csinálnom, aminél elfogadta megoldásnak. Pl itt nincs sehol 4 hosszú sor, mégis nyert az 'O' játékos:
-
andriscs
aktív tag
Hi!
Nem tudtam megállni, és teszteltem, úgy néz ki működik. Ahogy átnéztem a kódodat, rájöttem, hogy az enyém túlságosan körülményes, a tied viszont lényegretörő. Az egyik tanáromnak is írtam már, aki azt ajánlotta, hogy vigyázzak, mivel én String tömben tárolom a dolgokat, és a sima == csak referencia, inkább használjak equals() tagfüggvényt, mert az ő szavaival élve a ''programom egy időzített bomba''. Remélem, hogy azzal már rendesen működni fog, most már csak egy alap mesterséges intelligencia kell bele, aztán mehet a dolog.
Apró megjegyzés, hogy rájöttem (mivel ma tanultuk
), hogy hogyan lehet képet betölteni (kicsit eltér az Applet-ek képbetöltésétől): Szóval valahogy így kell:
Image img=Toolkit.getDefaultToolkit().getImage(''kep.jpg'');
utána pedig paint()-ben g.drawImage(img,0,0,this). Apró szépséghiba, hogy a kép nem jelenik meg. Vajon miért nem? Add metódus nincs képekhez, requestFocus() nem kell neki, tehát elvileg már látnom kellene a képet. De mégsem látok semmit. Ötlet? -
andriscs
aktív tag
Hi!
Úgy látom, hogy tényleg el kell megyaráznom, hogy hogyan működik a függvény. Szóval a külső 'for' ciklus a tömb oszlopain lépdes egyesével, az abba beágyazott 'for' pedig a sorokon lépked, magyarul a két 'for' bejárja a 2D-s hálót. A kis 'for' ciklusok az adott elem (game[row][col]) értékét hasonlítják össze egy bizonyos irányban a többi tömbelemmel (tehát mikor pl- game[row+count][col] van, akkor egy soron megy végig addig, amíg el nem éri a tömb szélét). Minden irányban más változó tárolja az azonos elemek számát. Mikor ez a változó elérte a 3-at, akkor van 4 egyforma elem ugyanabban az irányban. Ilyenkor lesz a return true. Egyébként pedig false. Szóval egy elég primitív algoritmus. Csak ezt nem értem, hogy miért nem működik a széleken. Ha valaki rájön a megoldásra, szóljon!Hi!
Azt hiszem, hogy megtaláltam a 2000-es év 101. matematikai problémáját, ugyanis a kód szintaktikailag jó, és véleményem szerint szemantikailag is, csak éppen nem úgy működik, ahogy kellene, de ne, jövök rá, hogy mi okozza az anomáliát. Ha valaki tudna segíteni, annak nagyon örülnék, mindegy, hogy milyen nyelven próbálja ki, nekem még pszeudo-kód is jó, csak valaki nézzen már rá, hogy mi a hiba! Arra már rájöttem, hogy akkor is talál megoldást, ha egy irányban elszórva vannak azonos elemek. De ez még nem magyarázza meg, hogy a derékszögű 4-es sort miért találja meg. Légyszi segítsetek! -
andriscs
aktív tag
Hi!
Látom, hogy senkit sem mozgat az előbbi probléma, most viszont van egy újabb. betöltöttem egy képet így: Image img=Toolkit.getDefaultToolkit().getImage(''bg.jpg''); Ezután egy a metódusban meghívtam ezt: g.drawImage(img,0,0,Color.RED,this);, ennek ellenére csak egy fehér képet kapok. Mi a hiba?Hi!
Arra már rájöttem, hogy miért fehér a háttér, de a képet még mindig nem tölti be. Van ötletetek?
[Szerkesztve] -
andriscs
aktív tag
Hi!
Azt hiszem, hogy egy ilyen, viszonylag egyszerű kódot nem kell agyonkommentezni. A lényege az, hogy minden egyes elemtől indulva végigmegy az irányokon. amit mondazs, azt más is ajánlotta már, de nem tudom, hogy miért jobb az, ah a for ciklusok feltételében ez van, hogy a következő elem 0 (ami a keretező tömbelemeket jelentené), vagy hogy ne lépje túl a tömb htaárait. Ennek így is működnie kellene. Amit te ajánlasz, az annyiban változtatná meg a kódot, hogy for(count=1;game[row+count][col]!=''0'';count++). De ez pontosan azt csinálná, mint hogy elér az eredeti tömb széléhez, ami az én feltételeimben van.Hi!
Úgy látom, hogy tényleg el kell megyaráznom, hogy hogyan működik a függvény. Szóval a külső 'for' ciklus a tömb oszlopain lépdes egyesével, az abba beágyazott 'for' pedig a sorokon lépked, magyarul a két 'for' bejárja a 2D-s hálót. A kis 'for' ciklusok az adott elem (game[row][col]) értékét hasonlítják össze egy bizonyos irányban a többi tömbelemmel (tehát mikor pl- game[row+count][col] van, akkor egy soron megy végig addig, amíg el nem éri a tömb szélét). Minden irányban más változó tárolja az azonos elemek számát. Mikor ez a változó elérte a 3-at, akkor van 4 egyforma elem ugyanabban az irányban. Ilyenkor lesz a return true. Egyébként pedig false. Szóval egy elég primitív algoritmus. Csak ezt nem értem, hogy miért nem működik a széleken. Ha valaki rájön a megoldásra, szóljon! -
Miracle
senior tag
Sziasztok!
Új problémával állok elő. Szóval van egy 2 dimenziós tömb, amiben azt vizsgálom, hogy egy adott elemtől indulva az elemet körbevevú 8 irányban találok-e még legalább 3 ugyanolyan elemet (amőba jellegű a dolog). A probléma azt, hogy a tömb belsejében tökéletesen működik a dolog, de a széleken mintha összeadná az összes találatot. Emiatt megcsináltam úgy, hogy minden irányban új változó tárolja a találatot, de így sem működik. Nincs ötletem, hogy mi a hiba. Természtesen a tömböknél figyelni kell, hogy ne lépje túl a tömb határait. Bemásolom ide az adott függvény kódját, hátha valaki rátalála hibára:
public boolean searchEngine() //need to check
{
int clone1=0;
int clone2=0;
int clone3=0;
int clone4=0;
int clone5=0;
int clone6=0;
int clone7=0;
int clone8=0;
for(row=0;row<size;row++)
{
for(col=0;col<size;col++)
{
for(int count=1;row+count<game.length;count++){
if (game[row+count][col].equals(game[row][col])) {
clone1++;
if (clone1>=3) return true;}
else clone1=0;
}
for(int count=1;row-count>-1;count++)
if (game[row-count][col].equals(game[row][col])) {clone2++;
if (clone2>=3) return true;}
else clone2=0;
for(int count=1;col+count<game.length;count++)
if (game[row][col+count].equals(game[row][col])) {clone3++;
if (clone3>=3) return true;}
else clone3=0;
for(int count=1;col-count>-1;count++)
if (game[row][col-count].equals(game[row][col])) {
clone4++;
if (clone4>=3) return true;}
else clone4=0;
for(int count=1;(row+count<game.length) && (col+count<game.length);count++)
if (game[row+count][col+count].equals(game[row][col])) {clone5++;
if (clone5>=3) return true;}
else clone5=0;
for(int count=1;(row-count>-1) && (col-count>-1);count++)
if (game[row-count][col-count].equals(game[row][col])) {
clone6++;
if (clone6>=3) return true;}
else clone6=0;
for(int count=1;(row+count<game.length)&& (col-count>-1);count++)
if (game[row+count][col-count].equals(game[row][col])) {clone7++;
if (clone7>=3) return true;}
else clone7=0;
for(int count=1;(row-count>-1) && (col+count<game.length) ;count++)
if (game[row-count][col+count].equals(game[row][col])) {clone8++;
if (clone8>=3) return true;}
else clone8=0;
}
}
return false;
}
Akinek van ötlete, ne kíméljen!mondjuk azt nem vágom, hogy mit akar az a hosszú függvény amit leírtál, mert a kommenteknél csak a whitespacekkel bántál fukarabbul(jó, ez lehet, hogy a PH), nomeg hajnali 2 van... de abból amit mondtál talán segíthet, hogy ha n*m-es a meződ, akkor (n+2)*(m+2) méretű tömbben tárolod, aminek a szélső soraiban és oszlopaiban nincsen csak 0 vagy az, amivel jelölöd, hogy nincs ott semmi, és okosan írod meg a hozzáférő-függvényeket, úgy, hogy a felhasználó ebből semmit se lásson, tobábbra is n*m-esként kell paraméterezni. azaz amikor kap egy n*mes paramétert, hozzáad egyet egyet.
mondjuk nyilván van elegéns megoldás is a problémára, de ahoz egy szépen igazított kód kellene ide bekommentelve. -
andriscs
aktív tag
-
andriscs
aktív tag
Hi!
Ez így oké, de majd mikor ZH-t írok Java-ból, akkor mit írjak a lapra? Hogy tessék tanár úr, itt egy link, ezen ellenőrizheti, hogy az általam használt Console osztály létezik, csak nem jegyeztem meg, de amúgy müködik.
Megpróbálom ezt a BufferedInputStream.In.Read.Int.Load.Integer.ReadLine.DoWork.Already.Java.Very.Easy.ToUse.This.Input.Read() függvényt, talán működik 
Hi!
Működik a dolog, csak csináltam auto-formázást, és a csodálatos progi átrakott egy {-t, így minden a catch alá került, persze, hogy nem futott le. Ez így elég hosszadalmas dolog, de ha nincs ló, jó a szamár is (én is megnéztem C#-ban van olyan Console-os readInt() ).
[Szerkesztve] -
Alvin_ti4200
félisten
Csinálsz egy Console nevű osztályt és belemásolod a letöltött Console osztály minden sorát, a package extra sort pedig kitörlöd. Így már elvileg tudsz majd hivatkozni rá.
-
faster
nagyúr
Egy példa:
Bővebben: link
Ebből már bizonyára tudsz parseInt-tel számot csinálni.
Ezért nem emlékeztem erre, mert bonyolult. BufferedReader, InputStreamReader, readLine(); sok ez egyszerre.
[Szerkesztve] -
andriscs
aktív tag
Hi!
De lehet, hogy én is be vagyok
Késő van már, nem tudom, miért ilyenkor programozok. Szóval melyik a jó verzió(amúgy egyik sem működik):
int first=System.in.read();
vagy:
System.in.read(first);
? -
faster
nagyúr
Van inputolvasás, anélkül nehéz lenne bármit is csinálni. de már olyan rég foglalkoztam Java-val, alig emlékszem.
Nem tudom, talán a System.in InputStream-nek kéne a tagfüggvényeit megnézni. -
Alvin_ti4200
félisten
Hi!
Láttam, hogy nincs igazi Java topic, ezért gondoltam, én nyitok egyet, jó lenne, ha itt kérdezgetnénk Java-s dolgokat. Szóval, hogy megnyissam a sort, lenne is egy kérdésem. Szóval van egy egyszerű Java alkalmazás, é szeretnék beolvasni az inputról. Van két {B}int tpusú változó, és {B}readCharacter(){/B} függvénnyel próbáltam beolvasni, de nem igazán ismeri a függvényt a fordító. Mit kell importálni, hogy működjön?
Kb. ilyen a progi:
class xy{
public static void main(String []args)
{
int x;
int y;
x=readCharacter();
y=readCharacter();
}
}
Ha van ötlet, írjatok!!Az említett Console osztály segítségével a Console.ReadInt() paranccsal tudod beolvasni őket, ha ki akarsz írni vmit a beolvasás elé, pl., hogy ''írj be egy számot'', akkor x=Console.ReadInt(''Írj be egy számot''). Persze ha jól emléxem

-
WuDu
tag
Hi!
Láttam, hogy nincs igazi Java topic, ezért gondoltam, én nyitok egyet, jó lenne, ha itt kérdezgetnénk Java-s dolgokat. Szóval, hogy megnyissam a sort, lenne is egy kérdésem. Szóval van egy egyszerű Java alkalmazás, é szeretnék beolvasni az inputról. Van két {B}int tpusú változó, és {B}readCharacter(){/B} függvénnyel próbáltam beolvasni, de nem igazán ismeri a függvényt a fordító. Mit kell importálni, hogy működjön?
Kb. ilyen a progi:
class xy{
public static void main(String []args)
{
int x;
int y;
x=readCharacter();
y=readCharacter();
}
}
Ha van ötlet, írjatok!!Input.readInt();
-
Szenty
tag
Hi!
Láttam, hogy nincs igazi Java topic, ezért gondoltam, én nyitok egyet, jó lenne, ha itt kérdezgetnénk Java-s dolgokat. Szóval, hogy megnyissam a sort, lenne is egy kérdésem. Szóval van egy egyszerű Java alkalmazás, é szeretnék beolvasni az inputról. Van két {B}int tpusú változó, és {B}readCharacter(){/B} függvénnyel próbáltam beolvasni, de nem igazán ismeri a függvényt a fordító. Mit kell importálni, hogy működjön?
Kb. ilyen a progi:
class xy{
public static void main(String []args)
{
int x;
int y;
x=readCharacter();
y=readCharacter();
}
}
Ha van ötlet, írjatok!!Hali!
Ezt máshogy lehet csak megoldani.
Most már túl álmos vagyok a válaszhoz, de addig is, amíg fel nem ébredek, töltsd le az alábbi filet:
ftp://ftp.gdf.hu/Public/Java/javaprog.zip
Ebben lesz egy Extra nevű csomag, abban egy Console nevű osztály. Abban van számbeolvasó rutin (mert amúgy csak stringbe lehetne).
Alszok...
Szenty
[Szerkesztve]
Ú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 Tabletek, E-bookok Nyomtatók, szkennerek 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?:))
- Projektor topic
- Autós topik
- Vivo X200 Pro - a kétszázát!
- Lightyear - befektetési app
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Revolut
- Kamionok, fuvarozás, logisztika topik
- Speciális kiadású AMD-s alaplapot villantott az ASUS a 20 éves ROG-jubileumra
- Apple MacBook
- AMD FX
- További aktív témák...
- 24 magos AMD Threadripper alapú munkára kiváló félgép, 128GB RAM-mal
- HP ZBook Fury 15 G7 i7-10850H 32GB 512GB SSD Quadro T2000 4GB FHD HUN bill, szép állapotban eladó
- Eladó MacBook Pro 16,1 2019 CTO
- új 0 km es garanciás lenovo loq rtx 5050 8gb
- Eladó teljesen újszerű karcmentes Samsung Galaxy Watch Ultra
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest








) Szóval ha sikerül megoldani valakinek a problémát, és én is hallok majd róla, akkor elérhető lesz.




