Gå til innhold

Anbefalte innlegg

... 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
Videoannonse
Annonse

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
  • 1 måned senere...
Gjest Slettet+1374861

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...