Er ved at lære Swing

Tags:    java

Jeg har efterhånden været i gang med at lære mig selv Java over et stykke tid nu, ved hjælp af http://java.sun.com/docs/books/tutorial/ , og føler nu at jeg har læst nok til at kunne lave min første application med en GUI.

Efter en kort overvejelse besluttede jeg mig for at lave et spil (kunne ikke lige finde en beskrivelse af det brætspil jeg prøver at lave på nettet, så i må nøjes med min dårlige forklaring)

**** Spil beskrivelse start (spring bare over hvis det ikke er vigtigt for dig)*****

selve spillet har en plade på 10*10 felter, der er 2 spillere med (sort og hvid), de skiftes til at lægge en brik på pladen.

Det gælder så om at lægge sin brik i enden af en lang række af fjendens brikker, som skal være afsluttet af en af dine brikker, for så ændre du alle hans brikker til dine brikker.

Derefter går det bare ud på at overtage så mange felter som overhovedet muligt, før alle felter er brugt op.

***** spil beskrivelse slut *****

så jeg begynder på den (for mig) lette del først. jeg skriver en class med alle fields og metoder der skal til for at kunne lave en plade, sætte brikker på osv. da jeg har lavet den, tester jeg om den virker ved hjælp af en ordentlig bunke system.out.format, og konkludere at den virker. lad os kalde den klas "spil" classen

Så begynder jeg på det nye emne, at lave en class der skal lave min GUI vha Swing. det er så det usikre felt for mig og her jeg har fået en del problemer (eller først fik jeg et problem, prøvede at løse det og fik endnu et problem osv.)

min egen tanke med hvordan min GUI skal laves var vha 10*10 JButtons som skulle repræsentere hver felt. Når man så trykkede på dem ville det resultere i en Event der redigerede min initiaterede "spil" objekt.

*** min løsning start (igen spring bare over hvis det ikke er vigtigt ***

skal lige siges at jeg bruger Netbeans IDE 5.5.1 til at programere i.

min første tanke var 2 delt.

1) mine buttons skulde, når der blev trykket på dem, gå ned i mit "spil" objekt, som jeg havde lavet i min Main metode, og ændere dens felt variabel til dens nye tilstand, efter den selvfølgelig havde tjekket at det var et lovligt klik.

2) lave en SwingWorker der hele tiden læser de forskellige knappers/felters variabler nede i min "spil" class, og ændre knappernes iconer til at vise det.

min problemer med den tanke er:

med 1'eren er jeg ikke lige begyndt endnu, men det handler vel om at jeg skal lade en metode catche nogle events der bliver throwet? (har ikke lige undersøgt den sag SÅ meget og tror langt fra at det er rigtigt, men nogle få hints til den løsning er da velkomne)

med 2'eren har jeg STORE problemer. for det kan jeg ikke finde ud af at skrive min SwingWorker ordentlig så den endelig bliver startet (det er mit første spørgsmål)

derefter kan jeg ikke lave en Static vertion af min GUI, som kan blive redigeret af min SwingWorker, men jeg ved ikke engang om den skal være static for at man kan lave ændringer i ens GUI. (så spørgsmål nummer 2 er hvordan skal det gøres?!)

spørgsmål nummer 3: nu har jeg prøvet at læse documentation for alle mulige former for API'er og føler bare at jeg misser et eller andet åbenlyst... Så hvis jeg gør det så må i meget gerne oplyse mig.

I får lige alt den kode jeg har skrevet, det er meget rodet, tror jeg, men har prøvet at skrive noter ved de færdige dele så de er mere overskuelige.

her først er "Spil" metoden som egentlig heder BlackAndWhite, navnet på mit kommende spil:

http://pastebin.com/f141d9fff

Så kommer den class med main, som også er en Jframe lavet i netbean, så der er en smule (indtil videre), pre genereret kode, men den vigtige del er main metoden, hvordan jeg starter min SwingWorker:

http://pastebin.com/f3efd10cd

her er så min swingworker, den er heller ikke komplet fordi jeg ikke kan få den til at ændre noget som helst i min GUI. Jeg har prøvet lidt af hvert, så det der står der nu er nok et meget vild gæt på hvordan det skal komme til at se ud:

http://pastebin.com/f310d1c68

**** løsning slut ****

Jeg ved ikke lige hvordan du vil svare mig uden at læse min løsning, he he, men held og lykke med det.

Jeg takker på forhånd, først fordi du har læst hele denne smøre, og derefter takker jeg for at du vil overveje at svare.

PS: hvis 200 point er for lidt til sådan en løsning, skal i bare sige til... men jeg har dog kun 500 at gøre af lige nu.







Indlæg senest redigeret d. 26.10.2007 17:03 af Bruger #12687
10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du prøver på at læser billeder ind, som ikke findes. Dette resultere i at den skriver (hver gang), at "Billedet mangler".

Til sidst i din kode prøver du at lave et nyt ImageIcon( image ) <-- men dit image er null.

Prøv at rette stierne til dit billede, og prøv så igen.



Er det fordi min post er for lang eller fordi jeg ikke giver nok point, at der ikke kommer nogle svar?

hvis det er det første kan jeg da godt gøre det MEGET mere enkelt.

Jeg har den her class
http://pastebin.com/f141d9fff som jeg vil lave en GUI for, hvilken fremgangsmåde vil være den bedste? (undskyld, men der mangler lidt notater på linket, men hvis du er i tvivl om noget så bare spørg)

og hvis det er det sidste der er problemet, så må i undskylde, men jeg har kun 500 point at gør med fra starten af, og vil gerne være sikker på at jeg minimum kan stille et stort spørgsmål til.

Men det kan også bare være at jeg overvudere forummets aktivitet over en weekend, he he, og det faktsik kun er mig i hele verdenen som sider foran skærmen her en lørdag eftermiddag? :roll:



Hvis det kan havde nogens interesse har jeg nu lavet en post om det samme emne på et nyopdaget (for mig) forum.

Det kan være en omformulering der kan hjælpe i forståelsen eller også vil i bare havde point for et svar fra begge steder ;)

http://forums.java.net/jive/message.jspa?messageID=242477#242477



Hejsa, har ikke lige haft tid til at teste dit prog, men i bunden kan du se at: "2 udviklere følger aktivt med i denne tråd"... og efter et stykke tid bliver din post jo fjernet fra forsiden...

Så medmindre folk lige har nået at se den på forsiden, tror jeg ikke de finder den igen.




Det er betryggene at vide... men hvis i ser på det link til det andede forum blev jeg opfordret til at gå på et tredje forum:

http://www.javagaming.org/forums/index.php?topic=17593.0

Jeg har lavet lidt modificationer og det har resulteret i:

http://pastebin.com/f7005fbc4

fra starten til linje 455 er selve spillet

455 og resten (deriblandt en nested class) er et forsøg på at lave en GUI.

Jeg er kommet så langt at jeg tror jeg har gjort det rigtige, at jeg nu får lavet en JPane som indeholder en JFrame med 100 knapper som hver har en actionlistener der når der bliver trykket: 1) ændre de påvirkede knappers status og 2) opdatere alle knappernes ikoner.

Mit problem ligger i nu at jeg ikke kan teste om det virker... jeg kan ikke starte min GUI uden at få en static/non-static fejl, har prøvet lidt af hvert.

Kan i hjælpe mig?

PS: har efter bedste evne prøvet at skrive hjælpsomme kommentare i koden, men stil spørgsmål hvis i ikke forstår et eller andet ;)




Indlæg senest redigeret d. 03.11.2007 20:02 af Bruger #12687
er kommet lidt længere nu... jeg mangler kun nu at få mine knapper til at indeholde mine iconer



Nu er jeg kommet ind i et støre problem:

jeg skal tit opdatere mine JButton's iconer, derfor har jeg lavet en metode, der tjekker en buttons status i min class og returner et ImageIcon, som jo så bliver brugt sammen med en SetIcon for at ændre JButtons default icon:

Fold kodeboks ind/udKode 


men jeg får en lang error:


Fold kodeboks ind/udKode 


Hvad gør jeg forkert?

Billederne ligger i samme mappe, jeg har prøvet med gif og jpg filer også, og prøvet at hente dem på flere forskellige måder.

("White.JPEG")

(File.separator + "White.JPEG")

(File.separator + "Engine" + File.separator + "White.JPEG")

(File.separator + "build" + File.separator + "Engine" + File.separator + "White.JPEG")



Indlæg senest redigeret d. 05.11.2007 09:24 af Bruger #12687
har opdateret min post ovenover ;)



Indlæg senest redigeret d. 05.11.2007 09:25 af Bruger #12687
Hvis i er interesseret i nogen af de 200 point så se her:

http://www.javagaming.org/forums/index.php?topic=17593.15

her kommer alle opdateringerne, så er jeg fri for at skrive det 2 gange. Jeg håber i er forstående overfor min dovenskab.



Har fundet et svar på mit spørgsmål, se linket hvis i er interaseret.



t