JPanel und ein PopupMenu

  • Themenstarter Themenstarter Grey_M
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Grey_M

Gast
Guten Tag,

ich habe mich zu tode :### , blöd :autsch: und weis trotzdem nicht wieso es bei mir :bahnhof: aussieht...

Ich will eigentlich nur bei einem Linksklick auf ein JPanel ein JPopupMenu öffnen, doch aus irgendwelchen gründen klappt es nicht...

Im folgenden meine Klassen.

Die Main Klasse
Code:
package Initialisation;

import Frames.Taskbar;

public class Initialisation {
	public static void main(String[] args){
		new Taskbar();
	}
}

Das Fenster
Code:
package Frames;

import java.awt.Toolkit;
import javax.swing.JWindow;

import Components.Controlpanel;

public class Taskbar extends JWindow {
	public Taskbar() {
		
		this.add(new Controlpanel());
		
		
		this.setSize((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(), 40);
		this.setAlwaysOnTop(true);
		this.setVisible(true);
	}

}

Das Panel
Code:
package Components;

import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Controlpanel extends JPanel {
	Color backgroundcolor = new Color(0, 0, 0);
	
	boolean loadbackground = false;
	ImageIcon backgroundicon = null;
		
	public Controlpanel(){		
		this.setLayout(new FlowLayout(0, 0, 0));
		
		if(loadbackground){
			backgroundicon = new ImageIcon("background.jpg");
			if(backgroundicon != null || backgroundicon.getIconWidth() != Toolkit.getDefaultToolkit().getScreenSize().getWidth()){
				JLabel backgroundlabel = new JLabel();
				backgroundlabel.setIcon(backgroundicon);
				this.add(backgroundlabel);
				this.setSize(backgroundicon.getIconWidth(), backgroundicon.getIconHeight());
			}
		}
		else{
			this.setBackground(backgroundcolor);
			this.setSize(18, 18);
		}
		this.addMouseListener(new PopupListener(new PopupMenu()));		
	}
}

Das PopupMenu
Code:
package Components;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class PopupMenu extends JPopupMenu{
	public PopupMenu(){		
		add(new JMenuItem("Ordner hinzufügen"));
		add(new JMenuItem("Verknüpfung hinzufügen"));
	}
}

Der Listener
Code:
package Components;

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


public class PopupListener extends MouseAdapter {
	private final JPopupMenu popupmenu;
	
	public PopupListener(JPopupMenu popupmenu){
		this.popupmenu = popupmenu;
	}
	
    public void mouseReleased(MouseEvent e) {
    	 if (e.isPopupTrigger()) {
         	System.out.println("...");
         	popupmenu.show(e.getComponent(), e.getX(), e.getY());
         }
    }
    
}

Ich weis wirklich nicht weiter. :bahnhof: Es gibt keine komplizierten Stellen und mit nem JTree hat es letztens auch wunderbar geklappt. Ich glaub langsam meine JDK und Eclipse starten eine Revolution....

Danke fürs lesen und antworten.
 
Ach übrigens noch.
Ich Listener habe ich ein

Code:
System.out.println("...")

Das gibt er auch erfolgreich aus. Nur dann beim anzeigen des PopupMenu stimmt etwas nicht...
 
Ich bin auf das Ergebnis gekommen, dass ein PopupMenu nicht in einem JWindow funktioniert. Macht man aus JWindow ein JFrame, so funktioniert es. :meld:

Die selbe Obtik wie im JWindow kriegt man dann mit

jframe.setUndecorated(true)

Ist doch alles blöd.... :roll:
 
So kann man das auch bezeichnen, aber wieso steht das nirgendwo beim JWindow bzw. wieso funktioniert dann JFrame?
Beide leiten vom awt.Window ab...
 
Was ist denn deine oberste JComponent?
Das Popup-Menü schonmal auf Heavyweight gestellt?
Das JWindow verwendet AFAIK keine GlassPane, das könnte beispielsweise die Ursache sein.
 
Die Sache hat sich für mich erledigt. Ich habe ein JFrame verwendet und damit war alles erledigt. =)

Bin nun offen für neue Probleme. ???:L
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben