Innuendo Skrevet 24. februar 2004 Del Skrevet 24. februar 2004 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
leif81 Skrevet 29. februar 2004 Del Skrevet 29. februar 2004 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
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å