Gå til innhold

Manipulere et bilde på skjermen.


Anbefalte innlegg

Jeg vet hvordan man kan flytte et bilde rundt omkring på skjermen ved hjelp av mus. Når jeg trykker venstre musknapp så kaller jeg repaint(). I den samme klassen så inkluderer jeg en paint(Graphics g) metode som tar seg av tegningen/rendringen(eng.) av bildet. Er dette en god måte å gjøre det på?

 

Men nå vil jeg lage en popup-meny når jeg høyreklikker PÅ bildet. Denne popupmenyen skal inneholde en del metoder for å manipulere bildet. F.eks. rotere bildet, slette bildet etc...

 

Jeg er klar over at dette innebærer programmering av en lytterklasse, og det har jeg også gjort, og fått ting til å fungere til en viss grad. Programmet kjører men jeg får nullpointerexception for hver gang jeg klikker en plass på skjermen og flytter på bildet. Popup-menyen dukker også opp men riktignok utenfor bildet(på toppen av bildet til venstre) når jeg høyreklikker.

 

Så jeg tror bare jeg spør noen andre om hvordan man best mulig kan programmere noe slik som jeg beskriver ovenfor, eller om noen ihvertfall kan fortelle meg hvordan popupmenyer og bilder kan kombineres på en lur måte.

Lenke til kommentar
Videoannonse
Annonse

Hva med å vise oss noe av koden?

 

Uansett så må man som Innuendo beskrev; -lage en lytterklasse.

 

Denne lytterklassen må registreres hos et objekt som implementerer java.awt.Component (alle gui-objekter gjør det).

 

mittObjekt.addMouseListener (new MuseLytter ());

-her registeres muselytter. Ved museklikk på objektet 'mittObjekt', vil Muselytter.mouseReleased(..) bli kjørt.

 

Definisjonen av MuseLytter kan se slik ut:

class MuseLytter extends MouseAdapter {  //indre klasse

 public void mouseReleased (MouseEvent me) {
   if (me.isPopupTrigger()) {
     JPopupMenu popup = new JPopupMenu ();

     JMenuItem nyttVindu = new JMenuItem ("Formater bilde");
     popup.add (nyttVindu);	//legger til menyvalg i popup-menyen

     nyttVindu.addActionListener (new ActionListener () {	//denne må også ha en listener...
       public void actionPerformed (ActionEvent ae) {

         System.out.println("VALG: Formater bilde!");

       }
     });
     
     popup.addSeparator ();  //legger til et skille i menyen...
     
     JMenuItem avslutt = new JMenuItem ("Avslutt");
     avslutt.addActionListener (new ActionListener () {
       public void actionPerformed (ActionEvent ae) {
         System.exit (0);
       }
     });
     popup.add (avslutt);       //legger til enda et menyvalg

     popup.show (MittObjekt.this, me.getX(), me.getY());
     //hvor popup-menyen skal tegnes opp henn. MittObjekt brukes som  referanse-koordinater til  x og y
   }
 }
}

 

 

Her er lenken til Dokumentasjon til JPopupMenu !

 

Om man trenger undermenyer i popup-menyen, kan man enkelt og greit legge til en JMenu som et JMenuItem

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