Popup- Menue- trennen von Panel und Aktion

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo nochmal,

ich habe ein großes Problem, und zwar hab ich in einem Thread schon geschrieben ( http://www.java-forum.org/de/topic48664_verbindung-zweier-klasse.html ), dass ich die Klasse JPanel(), wo das Popupmanü erscheinen soll und die Klasse für das Popupmenü trennen möchte. Leider weiß ich überhaupt nicht mehr weiter.
Könnte mir da vielleicht noch jemand helfen, ich wäre euch sehr sehr dankbar!!

lg und vielen dank

Michl
 

The_S

Top Contributor
Öhm

Code:
public class MyPanel extends JPanel {
...
   MyPopupMenu popup = new MyPopupMenu();
}

Code:
public class MyPopupMenu extends JPopupMenu {
...
}

!?
 

MQue

Top Contributor
Ja aber wenn ich einen Popup- Menüpunkt anwähle, soll die actionPerformed- Methode in Popupmenü aufgerufen werden und ich weiß nicht, wie ich eben diese Methode bzw. die ganzen Methoden, die für das Popup benötigr werden, in die Klasse Popup bekomme.
Ich möchte eben die 2 Klassen strikt trenne, sodass ich vielleicht in der Klasse MyPanel nur mit einer Zeile das Popupmenü hinzfügen muss und alles andere in der Popupmenü- Klasse stattfindet.

Vielen dank auf jeden Fall

lg
Michl
 

MQue

Top Contributor
Mein Proble schaut nunmehr folgendermaßen aus:
Vielleicht kann mir ja noch jemand helfen, Danke auf jeden Fall!!!
Code:
Klasse 1:

public class MainPanelHMI extends javax.swing.JPanel  {
    private ScreenPopUp screenMenue;
    
    public MainPanelHMI() {
	initComponents();	
	
	screenMenue = new ScreenPopUp(this);
	add(screenMenue);
	enableEvents(AWTEvent.MOUSE_EVENT_MASK);
      }
  
    public void processMouseEvent(MouseEvent evt) // mein Problem liegt genau hier, ich möchte diese Methode ganz weghaben
und statt dieser Methode soll die Methode in der Klasse 2 sofort aufgerufen werden und nicht wie jetzt über umwegen
	{
	screenMenue.processMouseEvent(evt);
	} 



Klasse 2:

public class ScreenPopUp extends PopupMenu implements ActionListener
{ 
    public MainPanelHMI listener;
    
    public ScreenPopUp(MainPanelHMI listener)
	{
	this.listener = listener;
	MenuItem mi;
	
	mi = new MenuItem("irgendwas");
	mi.addActionListener(this);
	add(mi);
	
	addSeparator();
	
	mi = new MenuItem("Hilfe");
	mi.addActionListener(this);
	add(mi);
	enableEvents(AWTEvent.MOUSE_EVENT_MASK);
	}
    
    public void actionPerformed(ActionEvent event)
	{
	System.out.println("hallo" + event.getActionCommand());
	}
    
    public void processMouseEvent(MouseEvent evt)
	{
	if (evt.isPopupTrigger())
	    {
	    System.out.println("In ScreenPopUP: " + listener);
	    this.show(listener, evt.getX(), evt.getY());
	    }
	}
}
 

MQue

Top Contributor
ich hab einfach den Konstruktor unten gemacht mit dem Methoden actionPerformed und mousePressed und in meiner PanelKlasse rufe ich das ganze so auf

add(new ScreenPopUp(this));

lg
Michl

Code:
 public ScreenPopUp(MainPanelHMI panel)
	{
	this.panel = panel;
	MenuItem mi;
	
	mi = new MenuItem("ScreenShot");
	mi.addActionListener(this);
	add(mi);
	
	addSeparator();
	
	mi = new MenuItem("Hilfe");
	mi.addActionListener(this);
	add(mi);
	enableEvents(AWTEvent.MOUSE_EVENT_MASK);
	panel.addMouseListener(this);
	}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben