JPopupMenu Problem und Tipp zu mouse/key

Status
Nicht offen für weitere Antworten.

virtualAudio

Aktives Mitglied
Hi Leute,

mal wieder ein kleines Kskb.

Zwei Dinge die ich nicht ganz hinbekomme.

1.) wenn man das Fenster maximiert bevor man das popupmenu das erste Mal aufruft...gibt es kein pupup sondern Buttons auf dem Fentser bzw. dem JPanel... keine Ahnung warum, vielleicht hat jemand einen Tipp!?

2.) solange man die Alt-Taste drückt wird an der Stelle des Cursors ein blauer Strich gezeichnet. Ich verstehe nicht warum dieser Strich beim Auslassen der Taste nicht immer gleich weg ist. Eigentlich sollte die boolean altpressed auf false gesetzt werden und dann paintImmediately() ausgeführt werden. In der paintComponent() wird diese Linie, wenn altpressed=false, nicht gezeichnet. Sollte also weg sein sobald paintImmediately() ausgeführt wurde.

Der Code:

Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;


public class kskb_popup extends JFrame implements KeyListener{

	JPopupMenu popUpM;
	Pane pane;
	boolean altpressed;
	
	class Pane extends JPanel{
		int mausX, mausY;

		public Pane(){
		}
		public void paintComponent(Graphics g){

			// Grösse des JPanels an die möglichweise veränderte Fenstergrösse anpassen
			setSize(this.getParent().getWidth()-this.getParent().getInsets().left-this.getParent().getInsets().right,
					this.getParent().getHeight()-this.getParent().getInsets().top-this.getParent().getInsets().bottom);
			super.paintComponents(g);
			g.setColor(Color.blue);
			// immer zeichnen
			g.drawRect(0,0,this.getParent().getWidth()-this.getParent().getInsets().left-this.getParent().getInsets().right,
					this.getParent().getHeight()-this.getParent().getInsets().top-this.getParent().getInsets().bottom);
			// nur zeichnen wenn alt gedrückt wird
			if (altpressed)g.drawLine(mausX,0,mausX,getHeight()); 
		}
	}
	
	
	
	//Konstruktor
	public kskb_popup(){
		
		setLocation(0,0);
		setSize(300, 150);
		setVisible(true);
		//addWindowListener(this);
		addKeyListener(this);
		pane = new Pane();
		pane.setLocation(0,0);
		pane.setSize((getWidth()-getInsets().left)-getInsets().right,(getHeight()-getInsets().top)-getInsets().bottom);
		getContentPane().add(pane);	

		popUpM = new JPopupMenu();
	    getContentPane().add(popUpM); 
	    JMenuItem[] jmi = new JMenuItem[5];
	    ActionListener al_fake = new ActionListener(){
	    	public void actionPerformed(ActionEvent e){
	    		popUpM.setVisible(false);
	    	}
	    };
	    for (int i=0;i<5;i++){
	    	jmi[i]=new JMenuItem("Test " + i);
	    	jmi[i].addActionListener(al_fake);
	    	popUpM.add(jmi[i]);
	    }
	    
		addMouseMotionListener(new MouseMotionListener(){
			public void mouseDragged(MouseEvent e) {
			}
			public void mouseMoved(MouseEvent e) {
				pane.mausX = (int)e.getPoint().getX()-getInsets().left;
				repaint();
			}
		});

		addMouseListener(new MouseListener(){
			public void mouseClicked (MouseEvent e ){			}
			public void mousePressed (MouseEvent e ){} 
			public void mouseEntered (MouseEvent e ){}
			public void mouseExited  (MouseEvent e ){}
			public void mouseReleased(MouseEvent e ){
				if (e.isPopupTrigger()){
					popUpM.setLocation(getLocation().x+e.getX(),getLocation().y+e.getY());
					popUpM.setVisible(true);
				}
			} 
		});

	}
	// 	Konstruktor-Ende
	
	
	public static void main(String[] args) {
	
		new kskb_popup();
	
	}

	public void keyTyped(KeyEvent e){}
	public void keyPressed(KeyEvent e) {
		if (e.getKeyCode()==KeyEvent.VK_ALT){altpressed = true;}
		System.out.println("pressed");
		pane.paintImmediately(pane.getX(),pane.getY(),pane.getWidth(),pane.getHeight());
	}
	public void keyReleased(KeyEvent e) {
		if (e.getKeyCode()==KeyEvent.VK_ALT){altpressed = false;}
		System.out.println("released");
		pane.paintImmediately(pane.getX(),pane.getY(),pane.getWidth(),pane.getHeight());
	}
}


Danke für Eure Hilfe. Bei Fragen...nicht schüchtern sein :wink:

Beste Grüße
Andi
 

André Uhres

Top Contributor
1. Dies muss weg: getContentPane().add(popUpM);

2. Versuch's mal mit pane.repaint() statt pane.paintImmediately(..)
 

virtualAudio

Aktives Mitglied
Hi André und danke wiedermal!!


Kannst Du es mir vielleicht noch erklären?

bei 1 versteh ich vor allem nicht, warum erst nach einer maximierung des Fensters dieses Problem entsteht.

bei 2: da weiß ich nicht was ich gemacht habe. Hab ja wie immer repaint() verwendet und nur deshalb geändert weil es nicht geklappt hat. Da hab ich vermutlich danach noch etwas anderes umgeschrieben. jetzt geht es jedenfalls mal ausreichend gut :toll:

Danke und guuhs aus Wien
Andi
 

André Uhres

Top Contributor
virtualAudio hat gesagt.:
..bei 1 versteh ich vor allem nicht, warum erst nach einer maximierung des Fensters dieses Problem entsteht.
Weil du setVisible(true) ziemlich am Anfang des Konstruktors machst, greifen die folgenden Komponenten
erst nach einem validate(). Wenn du die Fenstergrösse änderst wird validate() automatisch aufgerufen.
Wenn du jedoch setVisible(true) erst am Ende des Konstruktors machst, dann hast du gleich das Problem.

virtualAudio hat gesagt.:
bei 2: da weiß ich nicht was ich gemacht habe. Hab ja wie immer repaint() verwendet und
nur deshalb geändert weil es nicht geklappt hat. Da hab ich vermutlich danach noch etwas anderes umgeschrieben..
Kann ich leider nicht erklären, bin ja kein Hellseher :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JPopupMenu, getParent Problem... AWT, Swing, JavaFX & SWT 2
M jPopupMenu - Problem bei der Positionierung AWT, Swing, JavaFX & SWT 3
S Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 3
F Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 3
N Problem mit JPopupMenu und alwaysOnTop AWT, Swing, JavaFX & SWT 4
G Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 30
C Problem mit JPopupMenu AWT, Swing, JavaFX & SWT 6
G Problem mit JPopupMenu und Menüauswahl AWT, Swing, JavaFX & SWT 4
J "Problem" mit JPopupMenu AWT, Swing, JavaFX & SWT 7
L Wie adde ich ein JPopUpMenu AWT, Swing, JavaFX & SWT 3
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
M Accelerator zu JMenuItem des JPopupMenu einer JList AWT, Swing, JavaFX & SWT 2
M JPopupMenu per Klick schließen und gleichzeitig ActionEvent auf JButton? AWT, Swing, JavaFX & SWT 15
S Swing JPopupMenu visible AWT, Swing, JavaFX & SWT 4
S JPopupMenu schließen in SystemTray AWT, Swing, JavaFX & SWT 2
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
hdi Workaround: TrayIcon & JPopupMenu AWT, Swing, JavaFX & SWT 3
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
S JPopupMenu oder JCombobox die JList oeffnet..? AWT, Swing, JavaFX & SWT 7
A Swing in JPopupMenu die JRadioButtonMenuItems durchlaufen AWT, Swing, JavaFX & SWT 3
T JmenuItems in JPopupMenu kontextabhängig deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing JPopupMenu nicht schließen AWT, Swing, JavaFX & SWT 2
pinerski Probleme mit JPopupMenu und JMenuItem AWT, Swing, JavaFX & SWT 7
hdi Swing JPopupMenu: Größe AWT, Swing, JavaFX & SWT 4
Dragonfire width of JPopupMenu StyleBug AWT, Swing, JavaFX & SWT 3
M JPopupMenu - Ein vorhandenes Kontextmenü erweitern AWT, Swing, JavaFX & SWT 6
Iron Monkey JPopupMenu/JMenuItem Index für getSubElements()[] ermitteln AWT, Swing, JavaFX & SWT 8
X JPopupMenu Items aktualisieren sich nicht AWT, Swing, JavaFX & SWT 3
T JPopupMenu "schließen" AWT, Swing, JavaFX & SWT 7
M jPopupMenu AWT, Swing, JavaFX & SWT 2
N JPopupMenu - ausgewähltes Element zurückgeben AWT, Swing, JavaFX & SWT 2
P JPopupMenu scrollen AWT, Swing, JavaFX & SWT 2
A JPopupMenu: Nach oben aufpoppen AWT, Swing, JavaFX & SWT 9
T JPopupMenu wird bei Rechtsklick angezeigt! AWT, Swing, JavaFX & SWT 3
Firefork JPopupMenu unter einem Schalter darstellen AWT, Swing, JavaFX & SWT 2
K Netbeans GUI Builder (Matisse) und erstellen von JPopupMenu AWT, Swing, JavaFX & SWT 1
I In JPopupMenu scrollen AWT, Swing, JavaFX & SWT 4
M JPopupMenu per linker Maustaste öffnen AWT, Swing, JavaFX & SWT 9
V Beliebige Komponenten in einem JPopupMenu? AWT, Swing, JavaFX & SWT 3
C JPopUpMenu in einem JTree ist lahm AWT, Swing, JavaFX & SWT 14
F JPopupMenu und AbstractAction AWT, Swing, JavaFX & SWT 2
G Schließen von JPopupMenu AWT, Swing, JavaFX & SWT 14
R Hässlicher Punkt bei JPopupMenu AWT, Swing, JavaFX & SWT 12
S JPopupMenu - Kontrolliert beenden AWT, Swing, JavaFX & SWT 3
T java.awt.IllegalComponentStateException bei JPopupMenu AWT, Swing, JavaFX & SWT 6
R JPopupMenu,JScrollPane + repaint AWT, Swing, JavaFX & SWT 8
D Probleme bei der Positionierung von JPopupMenu AWT, Swing, JavaFX & SWT 2
G JPopupMenu in JTable AWT, Swing, JavaFX & SWT 4
Juelin Problem mit TextField.requestFocus(); AWT, Swing, JavaFX & SWT 17
Juelin Problem beim Laden Controller AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben