Forum huvudsida -> Programmering -> JAVA-hjälp sökes
Sidor: 1
Gunilla | 20:42 - 11:a Augusti 2005 | Post #1 | |
Medlem Inlägg: 9 Skicka PM |
Hej! ,,r lite av nybörjare på det här med JAVA och jag har stött på ett problem som jag hoppas att någon kunnig på JAVA kan lösa. Problemet: Jag ska göra ett enkelt spel, som jag byggt upp med egengjorda knappar. Problemet jag nu har är att jag inte vet hur man ska kunna få knapparna att bli klickbara. (=så att man även ska kunna koppla lyssnare till dem). Jag skulle bli väldigt tacksam för all hjälp jag kan få med detta! programmet (koden):
Andrade sa att koden hamnade i en kodruta, eftersom jag ar for lat for att lasa koden annars /ozamosi ------------------------- Ingen signatur! Senast redigerad 19:00 - 13:e Augusti 2005 |
Independence | 22:55 - 11:a Augusti 2005 | Post #2 | |
Administratör Inlägg: 1800 Skicka PM |
Du skulle ju kunna göra en klass som ärver från en vanlig knapp-klass och sedan bygga en egen funktion för att rita knappen och på så sätt kan du själv välja hur knappen ska se ut samtidigt som du behåller funktionaliteten med klickbarhet. Ehum, eller så kan man inte alls göra så, var ett tag sedan jag programmerade Java ------------------------- Vi är riddarna som säger fiskbulle! |
Gunilla | 02:08 - 12:a Augusti 2005 | Post #3 | |
Medlem Inlägg: 9 Skicka PM |
Ok. Jag förstår nog (kanske) hur du menar, men jag tror inte att jag förstår hur det ska gå till. Jag har ju gjort en egen klass (längst ner i mitt första inlägg) som heter RitPanel och där har jag ritat upp knapparna. De får jag också att synas i mitt spel. Det som jag är osäker på och undrar är om man inte måste "identifiera" knapparna på något sätt, tex så varje knapp får ett "namn" button1, button2 osv? Jag vill nämligen att det ska ske olika saker beroende på vilken knapp som det trycks på. Och om jag ska koppla lyssnare till knapparna, vad ska jag då koppla till? Alltså hur "hittar" lyssnaren min/mina knappar? (eller tänker jag helt fel nu? hehe. En till fråga i farten: Hur får jag knapparna att se ut som att de är tryckbara, tex som med Quit-knappen som jag har med i mitt spel, att det ser ut som om den buktar in lite när man för muspekaren över knappen? Med hjälp av lyssnare, eller ska man göra nåt med JButton eller liknande? Hm, som sagt så är jag nybörjare... :-) Det är svårt men kul! :-) MVH ------------------------- Ingen signatur! |
Independence | 15:49 - 12:a Augusti 2005 | Post #4 | |
Administratör Inlägg: 1800 Skicka PM |
Haha, oj förlåt, du har visst redan gjort det jag sa Eftersom klassen extendar en vanlig JButton borde du kunna göra precis som när du använder en JButton i Swing. Du har ju även en klass som implementerar ActionListener, då är du nästan färdig ju! Jag skulle ha gått tillväga såhär: 1. Ta bort klassen SkapaLyssnare och skriv istället "implements ActionListener" efter "class Spelplan extends JFrame". Detta gör att du slipper att ha globala objekt eller olika metoder för att skicka objekten fram och tillbaka mellan klasserna. Det blir helt enkelt mycket enklare 2. Koppla händelselyssnaren till knappen genom att skriva följande rad efter raden där du skapar objektet p:
3. Skapa en metod som ser ut såhär i Spelplan-klassen:
Skapar du flera kanppar är det bara jämföra dem med ae.getSource() för att få reda på vilken knapp det gäller. Jag kan ha missat något här, men jag hoppas att du kan pussla ihop det och få det att fungera, lycka till ------------------------- Vi är riddarna som säger fiskbulle! |
Gunilla | 20:04 - 12:a Augusti 2005 | Post #5 | |
Medlem Inlägg: 9 Skicka PM |
Hej igen! Tack för svar Independence!! Ska testa det du sa så fort jag fått barnen i säng :-) En sak till bara som jag upptäckte. Det är att när jag kör programmet så är nu HELA spelplanen, där jag har knapparna, som en Knapp, alltså så fort jag rör muspekaren innanför spelplanen så blir hela spelplanen "intryckt", precis som när jag tex rör med muspekaren över Quitknappen. Trycker jag med musknappen inom området så ändras alltså hela fältet färg, som om hela fältet var en knapp). Hur ändrar jag så att det inte är på det viset? Nu snackar jag utan att veta, men kan man "baka" in RitPanel'en i en JPanel tex. Nu kanske jag svamlar helt för nu snackar jag om nåt som jag inte vet alls, utan bara chansar... MVH och tack än en gång Independence för ditt snabba svar! Jag kände att jag hade kört fast där innan... Nilla ------------------------- Ingen signatur! |
FunkyChicken | 21:04 - 12:a Augusti 2005 | Post #6 | |
Nyhetsredaktör Inlägg: 800 Skicka PM |
vet att jag läst en tutorial om flera knappar, actionlistener och swing på sun.com/java... tänkte abra säga det, kanske värt en kik? |
Independence | 22:04 - 12:a Augusti 2005 | Post #7 | |
Administratör Inlägg: 1800 Skicka PM |
När började hela spelplanen bete sig som en knapp? ,,r det samma kod som du postade i första posten? Jag tror inte att man kan baka in RitPanel i en JPanel faktiskt, eftersom det är två olika komponenter där den ena ska ligga i den andra (RitPanel som är en JButton ska ligga i en JPanel). Förstod jag rätt? ------------------------- Vi är riddarna som säger fiskbulle! |
Gunilla | 02:01 - 13:e Augusti 2005 | Post #8 | |
Medlem Inlägg: 9 Skicka PM |
Svar till FunkyChicken: Tack för tipset! Hittade dock inte svaret till mitt buttonproblem, men sidan var väldigt bra att kolla upp olika saker. Blev att jag satt och läste ett par timmar om både ditt och datt, hehe. Bra tips! Svar till Independence: Ja, det är samma kod som jag postade först. Angående det där med JPanel, så menade jag nog det som du sen skrev. Det är jag som är dålig på att förklara mig. :-) Man kanske inte ska ha för många bollar i luften, eftersom vi ju höll på och diskuterade "hela spelplanen är en knapp"-problemet, men jag vill ändå fråga en sak till som kom på: Om jag vill att mina knappar ska "uppföra sig" på olika sätt, alltså beroende på vilken knapp som det trycks på så ska olika saker hända, är det då så att jag har gjort fel som ritat upp alla mina knappar (i RitPanel) på en gång? Ska jag kanske "göra" varje knapp för sig, dvs att skapa en RitPanel1, RitPanel2, osv för varje knapp? För att sedan kunna knyta en viss knapp med ett visst kommando? MVH Nilla ------------------------- Ingen signatur! |
Gunilla | 15:42 - 13:e Augusti 2005 | Post #9 | |
Medlem Inlägg: 9 Skicka PM |
Citat av Independence: När började hela spelplanen bete sig som en knapp? ,,r det samma kod som du postade i första posten? Jag tror inte att man kan baka in RitPanel i en JPanel faktiskt, eftersom det är två olika komponenter där den ena ska ligga i den andra (RitPanel som är en JButton ska ligga i en JPanel). Förstod jag rätt? Hej igen (terroriserar Er med mina frågor! hehe) Jag hoppas att jag har förstått det rätt. Nu har jag iallafall ändrat lite. Gjorde så här vid: //ritar det som gjordes i classen RitPanel JPanel spelplan=new JPanel(); RitPanel p=new RitPanel(); spelplan.add(p); spelplan.setBackground(Color.green); add(spelplan, BorderLayout.CENTER); Problemet med att hela planen är som en knapp försvinner. Så långt så bra, men ikonerna/knapparna som jag ritade i RitPanelklassen syns inte. Istället syns en Button-liknande (ca 2*5 mm) knapp centrerad i mitten och längst upp. Se bild nedan. Då visas det här: Så som jag hade det tidigare i "//ritar det som gjordes i classen RitPanel": RitPanel p=new RitPanel(); p.setBackground(Color.green); add(p, BorderLayout.CENTER); Då visas spelplanen som jag vill att det ska se ut, dock med problemet, som jag tidigare berättat om, att hela spelplanen är som en knapp. Se bild nedan. Då visas det här: Jag tycker att det borde funka när jag gör så att RitPanelen ligger i en JPanel. Eller är jag helt ute och cyklar? Tydligen är jag väl det eftersom det blir fel... Hm det här var svårt för mig. Någon som har en ide vad felet kan vara? MVH Nilla (forumterroristen, hehe) ------------------------- Ingen signatur! |
Independence | 16:17 - 13:e Augusti 2005 | Post #10 | |
Administratör Inlägg: 1800 Skicka PM |
Okej, nu tror jag att jag förstår själva problemet. Klassen du har döpt till RitPanel är ingen panel som du verkar tro att det är, det är en JButton (eftersom du har extendat den ifrån JButton). Alltså är själva spelplanen en knapp, ingen panel. Om du extend:ar JPanel till RitPanel går det nog bättre. Sedan ska du skapa en till klass som extendar JButton som du sedan använder för att lägga till de olika objekten du skall ha på spelplanen (för jag antar att du vill att man ska kunna använda de olika objekten på spelplanen såsom cirklar och fyrkanter till att klicka på?). Sedan skapar du helt enkelt en massa objekt från klassen som du kanske döpt till Spelplansprylar (den som extend:ar JButton). Jag vet inte hur mycket av det där som du förstod, men är det något som är svårt att förstå eller om du inte vet skillnaden på objekt och klass eller inte pysslat så mycket med extends och implements (såkallade arv) så kanske du borde kika lite på någon guide om objektorientering innan du fortsätter. Ge inte upp bara! ------------------------- Vi är riddarna som säger fiskbulle! |
Gunilla | 18:36 - 13:e Augusti 2005 | Post #11 | |
Medlem Inlägg: 9 Skicka PM |
Hej! Bra att kunna bolla sånt här med någon som du Independence, för du verkar duktig! Synd bara att den i andra änden (jag) är så trög :-) Jag börjar med det som direkt dyker upp i mitt huvud när jag läst ditt senaste svar/förklaring: Kan jag inte döpa om min klass, RitPanel, till tex Spelplansprylar? ,alltså att de ska vara just knappar. Med andra ord så ska Spelplansprylar vara Buttons och inte en panel. Kan man genom att göra så hoppa över mellanstadiet att först extenda JPanel med RitPanel och sedan behöva göra en ny klass "Spelplansprylar" där jag lägger till knapparna? Men om man gör det så är man ju tillbaka egentligen till hur det var förrut? Då är det ju bara namnet som bytts. Ok, jag gjorde iallafall som du sa (hoppas jag) i ditt senaste svar. Jag extendade JPanel med RitPanel och skapade en ny klass, Spelplansprylar, där jag la till mina ritade komponenter/knappar. Eller ska de knappar jag har skapat fortfarande ligga i RitPanel? (och om 'inte', vad ska ligga i RitPanelen? Hm, när jag på mitt nybörjarlogiska (snyggt ord va? :-) ) sätt tänker ut hur det ska vara, så tycker jag att det borde "räcka" att göra om RitPanelen till Spelplansprylar och att extenda JButton direkt. Jag tänker antagligen fel? Citat av Independence: (för jag antar att du vill att man ska kunna använda de olika objekten på spelplanen såsom cirklar och fyrkanter till att klicka på?). Ja. Citat av Independence: Sedan skapar du helt enkelt en massa objekt från klassen (Spelplansprylar)... hm, jag har läst den meningen några gånger nu, men jag är inte riktigt säker på vad du menar. Kanske. Ge inte upp bara! Nej då! ------------------------- Ingen signatur! |
ozamosi | 19:11 - 13:e Augusti 2005 | Post #12 | |
Administratör Inlägg: 1129 Skicka PM |
Jag ska forsoka forklara hur du ska tanka, tankte jag (notera att jag inte riktigt vet hur mycket du har andrat i originalkoden, sa jag kan ha fel nagonstanns) En JButton ar en knapp. EN knapp. Sa nar du gjorde sa att du fick ut alla fargglada figurer sa var det en knapp som bestod av ett gront fallt med figurer. Det independence sager till dig att gora ar att ha en ritpanel som bara ar en panel, inte en knapp. Figurerna ska sedan vara av klassen Spelplansprylar, och den klassen ska vara en typ av knapp, eftersom det ar figurerna, och inte spelplanen, som ska vara klickbara. Sedan skapar du en massa figurer - alltsa Spelplansprylar, alltsa knappar - och lagger dem pa panelen. Skriver du new Spelplansprylar far du ett objekt av typen Spelplansprylar. Ett objekt ar en instans av en klass. Da mina javakunskaper ar minst sagt begransade tanker jag inte forsoka mig pa nagon mer handfast hjalp. ------------------------- Ljusblå |
Independence | 19:14 - 13:e Augusti 2005 | Post #13 | |
Administratör Inlägg: 1800 Skicka PM |
Okej, jag tror jag missade att berätta en viss vital del som jag tänkte men tydligen inte skrev: Alla de olika cirklarna och fyrkanterna ska ligga i olika objekt. Alltså, varje cirkel ska vara en egen instans utav klassen Spelplanspryl. Ligger alla prylarna i samma klass blir det nästan omöjligt att göra så att det händer olika saker beroende på vilken man trycker på. För att kunna sakpa flera olika prylar av en klass kan man använda sig utav parametrar till funktionen. För att visa det hela kommer här lite kod, ingen kod som går att kompilera troligtvis men den borde visa vad jag menar ivarje fall:
Du förstås en ActionListener där också ifall det ska hända något om man klickar på sakerna. Sedan skapar du lite olika SpelplansprylFyrkant med olika parametrar och lägger till på spelplanen. Ungefär såhär:
Hoppas du förstod något. Jag tror inte att just den där koden som jag skrev fungerar, men något liknande borde fungera. Lite osäker på biten med att göra en ny konstruktor, man kanske inte skall anropa orginalkonstruktorn eller så görs det kanske på något annat vis. Edit: Jag menade precis så som ozamosi säger. Nu hann han visst posta för mig. Menmen, det blir kanske enklare att förstå när flera förklarar ------------------------- Vi är riddarna som säger fiskbulle! Senast redigerad 19:16 - 13:e Augusti 2005 |
Gunilla | 19:33 - 13:e Augusti 2005 | Post #14 | |
Medlem Inlägg: 9 Skicka PM |
Måste börja med att säga att jag blir glad som får svar så snabbt!! Tack till Er bägge!! Och för det andra så börjar det nog klarna även i min tröga hjärna, hehe. Bra också att du ritat ut hur du menar och tänkt Independence. Mycket lättare för mig att förstå. Tillbaka till kodandet... ------------------------- Ingen signatur! |
Gunilla | 00:26 - 15:e Augusti 2005 | Post #15 | |
Medlem Inlägg: 9 Skicka PM |
Hej igen. Har suttit hela dagen idag och försökt ändra och få till det. Jag vet inte om jag har fått till det så som ozamosi och Independence tipsade om. De ändringar i klassen spelplan som jag har gjort är i "//ritar det som gjordes i klassen RitPanel, MinKnapp". Se bild. Sedan har jag gjort ändringar i MinKnapp (=ändrat namn från SpelplansprylarFyrkant), där jag har försökt att göra som Independence visade. Dock tog jag bort "super.JButton" eftersom det inte gick att kompilera och Independence var osäker på hur den skulle va (?). Se bild. I övrigt så är koden som tidigare (i RitPanel och Spelplan). Jag lyckas inte få de två knappar som jag har gjort att dyka upp som jag vill. När jag kör programmet så får jag upp: Alltså fortfarande med knapparna längst upp. Bara en tanke, ett test: Om jag ändrar i "//ritar det som gjordes i klassen RitPanel, MinKnapp" och INTE lägger knappen (k1) i RitPanelen (se bild) utan adderar den till spelplanen, så får jag ju upp den nya ritade fyrkantsbilden. (Dock är ju hela spelfältet en knapp), men det visar väl(?) att klassen MinKnapp funkar? Bilderna: Känner att jag återigen kört fast då jag har suttit och läst i min javabok och googlat efter svar hela dagen. Utan framgång som ni förstår. Någon som kanske ser vad jag gör för fel? PS: Ber om ursäkt för att bilderna är så stora och att det därför blir stort avstånd mellan text och bilder. Använder mig av paint. ,,ven om jag, i några fall, har förminskat bilderna så tar de ändå upp hela det tomma fältet... MVH Nilla ------------------------- Ingen signatur! |
ozamosi | 11:43 - 15:e Augusti 2005 | Post #16 | |
Administratör Inlägg: 1129 Skicka PM |
Jag kan saga vad problemet ar. Jag kan inte saga sakert vad losningen ar... Problemet ar att det inte ar knappen du ritar ut i din paintComponent, utan det ar en kvadrat - vilken som helst. Jag kan tanka mig att losningen pa problemet ar att flytta knappen fritt, men i sa fall behover du nagot annat an BorderLayout. ------------------------- Ljusblå |
Independence | 12:31 - 15:e Augusti 2005 | Post #17 | |
Administratör Inlägg: 1800 Skicka PM |
Tja, jag har inget mer att komma med direkt Nu har du fått till det som jag hade tänkt tror jag, men det verkar inte fungera så bra tyvärr.. ------------------------- Vi är riddarna som säger fiskbulle! |
Gunilla | 13:27 - 15:e Augusti 2005 | Post #18 | |
Medlem Inlägg: 9 Skicka PM |
Citat av Independence: Tja, jag har inget mer att komma med direkt Nu har du fått till det som jag hade tänkt tror jag, men det verkar inte fungera så bra tyvärr.. Jag tycker att det borde fungera nu och det är ju det som gör det så frustrerande. Känns som om det kanske bara behövs någon liten ändring på nåt... Citat av ozamosi: Jag kan tanka mig att losningen pa problemet ar att flytta knappen fritt, men i sa fall behover du nagot annat an BorderLayout. Jag satt ett bra tag i går och försökte med alla möjliga (och omöjliga ) Layout'er utan framgång. Vad jag förstår av era kommentarer så verkar inte koden vara helt åt skogen iallafall(?), så nu kanske det bara är någon liten detalj som behöver fixas. Jag ska testa lite saker och så får man hoppas att jag lyckas träffa rätt till slut Tack för att ni tar/tagit er tid att kolla min kod!! MVH Nilla ------------------------- Ingen signatur! |
Sidor: 1
Forum huvudsida -> Programmering -> JAVA-hjälp sökes
Du får inte posta i den här tråden | Till toppen
Datum
2025-01-02 16:25
Vecka: 01
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.