klovnemaske Skrevet 29. oktober 2007 Del Skrevet 29. oktober 2007 ... eller kanskje det bare er jeg som er dum. Jeg har et "tegneprogram" (det er en skoleoppgave) som skal kunne tegne enkle figurer. Øverst er det en meny, og en av tingene man kan velge fra menyen, er "lag rektangel". Når man gjør det, aktiveres følgende kode (litt hentet fra forskjellige klasser, det er litt mer oversiktlig i virkeligheten): p1 = controller.getPunkt(); p2 = controller.getPunkt(); e = new Rektangel(p1, p2); controller er klassen som styrer det meste, men det har ikke så mye med saken å gjøre. Problemet er getPunkt()-metoden, som ser slik ut: public Point getPunkt() { currentPoint = null; while (currentPoint == null){ //loop ... } return currentPoint; } currentPoint settes når man trykker med musa et eller annet sted i vinduet. Det fungerer veldig fint når jeg, fra en hendig main-metode, bare kaller controller.getPunkt(). Problemet er når jeg kaller den fra menyen. Da blir bare programmet stående og henge (det er while-løkka som bare looper og looper), fordi jeg ikke får trykt et sted i vinduet og fått tak i dette dumme punktet så lenge menyen fortsatt er aktiv. Den burde ha lukket seg når jeg setter i gang lagRektangel()-metoden! Noen tips til hvordan jeg kan få til dette? Evt. noen tips til hvordan jeg ellers kan skrive getPoint()? Selve vinduet jeg driver og trykker i er et JPanel som har en MouseListener. Si fra hvis dette er veldig uklart og jeg må forklare mer ... Lenke til kommentar
pgdx Skrevet 29. oktober 2007 Del Skrevet 29. oktober 2007 Noe sier meg at du bør droppe while()-løkken din til fordel for noen ActionListener/MouseListeners. Lenke til kommentar
pgdx Skrevet 29. oktober 2007 Del Skrevet 29. oktober 2007 Dette er jo en litt hackete metode: http://troop.pastebin.com/f64ed1abd Lenke til kommentar
klovnemaske Skrevet 30. oktober 2007 Forfatter Del Skrevet 30. oktober 2007 Hehe. Jeg tok bort den while-løkka, jeg, og løste hele greia på en litt annen måte. Som i følge meg ikke var fullt så elegant (og mye mindre oversiktlig), men om ikke annet så virket den Minner litt om den du linket til, med noen slags "aktive punkter", ja. Takk for hjelpen uansett, kommer meget mulig tilbake hit neste gang jeg står fast på noe Lenke til kommentar
Gjest Slettet+1374861 Skrevet 13. desember 2007 Del Skrevet 13. desember 2007 hvorfor ikke implementere MouseListener interfacet som er så intuitivt som bare det...? bare implementer det på en klasse som skal ha oversikt over ulike events, og add den som listener på JPanelet eller hva du nå måtte benytte som "tegnebrett"... så bare fyller du ut mouseClicked(MouseEvent e) metoden og benytter e.getX() og e.getY() til å finne posisjonen... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå