30. november 2004 - 20:21Der er
6 kommentarer og 1 løsning
problem med JPopupMenu
Hej Jeg sidder og er ved at lave en JPopupMenu som skal fremkomme hvis man trykker inden for et bestemt område - dette er implementeret på følgende måde public void mouseClicked (MouseEvent event) { Point p = event.getPoint(); double x = p.getX(); double y = p.getY(); int v = (int) (x+100); int z = (int) (y+50); System.out.println(p); System.out.println(v + " " + z); if(currentPic == 1 && x<660 && x>450 && y>150 && y<360) { popUp.setLocation(v,z); popUp.setVisible(true); }... Problemet er imidlertid at der ikke sker noget når man køre musen hen over denne - ingen af de 2 menupunkter jeg har puttet i den markeres. Hvorfor? Derefter skal jeg naturligvis ha lavet en Listener på denne menu - men jeg kan ikke bruge den samme da der skal ske forskellige ting afhængig af hvor menuen kaldes frem. Hvordan kan jeg gøre dette smartest. Er det nemmere at lave flere popups eller kan det lade sig gøre med den samme?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Da det ikke er en alm PopupMenu men en JPopupMenu kan jeg ikke bruge metoden show, men det problem jeg har lige nu er sådan set bare det med at menupunkterne ikke blive "hifhlighted" når musen køres over - det andet med Listeneren har jeg selv løst - måske ikke så pænt med det virker. Men jeg vil stadig gerne vide hvordan jeg får menupunkterne til at blive highlighted
Hvor i koden ændres fokus et brøkdel af et sekund efter den vises? Jeg ved ikke lige hvor meget kode der er at vise - det er vel her der sker noget med popup menuen???
Ja - en JPopupMenu skal kende sin parent/forælder ellers beholder parent focus. Prøv at trykke på knappen "Vis popup med setVisible()" menuerne markeres ikke når du kører musen henover, tryk derefter på knappen "Vis popup med show()", nu kender popup'en sin parent og knap 1 vil nu også virke.
Du kan også få knappen "Vis popup med setVisible()" til at virke med det samme, ved at fortælle popup'en hvem der er dens parent, kig på min metode vispop() og fjern udkommenteringen af linien popup.setInvoker(this); så vil knappen "Vis popup med setVisible()" virke med det samme.
Test klasse:
public class PopupTest extends javax.swing.JFrame {
public PopupTest() { initComponents(); setSize(400,400); }
private void initComponents() { popup = new javax.swing.JPopupMenu(); jMenu1 = new javax.swing.JMenu(); jMenu2 = new javax.swing.JMenu(); knap1 = new javax.swing.JButton(); knap2 = new javax.swing.JButton();
jMenu1.setText("Dette er menu 1"); popup.add(jMenu1);
jMenu2.setText("Dette er menu 2"); popup.add(jMenu2);
Super fedt - tak for hjælpen. Altid rart når nogen kan berige ens viden om Java.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.