Avatar billede dennism Nybegynder
17. oktober 2006 - 12:41 Der er 3 kommentarer og
1 løsning

Java: JPopupMenu

Jeg har forsøgt at lave en menu ved højre-klik med musen. Men det ser ikke så godt ud ;)

Nogen der kan hjælpe mig?

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

public class Main {
   
    public static void main(String[] args) {
        JFrame frame = new JFrame("Program med Statusbar");
        JPanel pane = new JPanel();
       
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
       
        JPopupMenu popupMenu = new JPopupMenu();
        JMenuItem popUpMenu1 = new JMenuItem("test");
        popupMenu.add(popUpMenu1);
        frame.add(popupMenu);
       
        frame.pack();
        frame.setSize(300,300);
       
        frame.setVisible(true);
    }
   
}
Avatar billede winners79 Nybegynder
05. november 2006 - 02:26 #1
den her virker, håber den er som du vil have den:)

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class Main {
    JPopupMenu popupMenu;

    public Main() {
        JFrame frame = new JFrame("Program med Statusbar");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);

        popupMenu = new JPopupMenu();

        popupMenu.add(new JMenuItem("menu 1"));
        popupMenu.add(new JMenuItem("menu 2"));

        frame.addMouseListener(new PopupListener());
        frame.pack();
        frame.setSize(300, 300);
        frame.setVisible(true);

    }

    class PopupListener extends MouseAdapter {

        public void mousePressed(MouseEvent e) {
            showPopup(e);
        }

        public void mouseReleased(MouseEvent e) {
            showPopup(e);
        }

        private void showPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                popupMenu.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    }
}
Avatar billede dennism Nybegynder
05. november 2006 - 14:18 #2
tak for det :)

Har man mulighed for at lave PopupListener som en inner-class, så man kan køre den i samme klasse? Altså hvor man skriver metoderne inde  i frame.addMouseListener-metoden?

Du må meget gerne smide et svar :)
Avatar billede winners79 Nybegynder
05. november 2006 - 15:31 #3
Jeg tror det er dette du spørger efter ikke? :)

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class Main {
    JPopupMenu popupMenu;

    public Main() {
        JFrame frame = new JFrame("Program med Statusbar");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);

        popupMenu = new JPopupMenu();

        popupMenu.add(new JMenuItem("menu 1"));
        popupMenu.add(new JMenuItem("menu 2"));

        frame.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                showPopup(e);
            }

            public void mouseReleased(MouseEvent e) {
                showPopup(e);
            }

            private void showPopup(MouseEvent e) {
                if (e.isPopupTrigger()) {
                    popupMenu.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        });
        frame.pack();
        frame.setSize(300, 300);
        frame.setVisible(true);

    }
}
Avatar billede dennism Nybegynder
05. november 2006 - 15:41 #4
Ja, helt rigtigt ;)

tak for hjælpen!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester