MouseEnter - Exit - Starthilfe bitte!

Status
Nicht offen für weitere Antworten.

MPW

Top Contributor
Hallo,

ich habe ein Undecorateted Fenster, dass ich ja so nicht verschieben kann, ich möchte das so machen, dass wenn das Fenster oben in einem gewissen Bereich mit der Maus berührt wird, dass es dann Decorated wird und man es verschieben kann...
Dazu habe ich eine Componente von JComponent abgeleitet und einfach leer gelassen(nur die Größe definiert):
Code:
import javax.swing.*;
import java.awt.*;

class Balken extends JComponent {
	public Balken(int höhe, int breite) {
		setBounds(0 , 0, breite, 20);
	}
	public void paint(Graphics g) {
		Color black  = new Color(0,0,0);
		g.setColor(black);
		g.fillRect(0, 0, getSize().width, getSize().height);
	}
}

dann habe ich sie eingebaut(das Schwarzgefärbte ist nur zur Kontrolle und wird später wieder entfernt):

Code:
		Balken test = new Balken(höhe, breite);
		add(test);
		MouseAdapter tryAndError2 = new MouseAdapter() {
			public void mouseEnter(MouseEvent event) {
				System.out.println("false");
				setUndecorated(false);
			}
			public void mouseExit(MouseEvent event) {
				System.out.println("true");
				setUndecorated(true);
			}
		};
		test.addMouseListener(tryAndError2);

Warum klappt das nit?
Danke für eure Antworten!

MfG
MPW
 
B

Beni

Gast
Wer lesen kann (und die API kennt) ist klar im Vorteil :wink:

hier
This method can only be called while the frame is not displayable
A component is displayable when it is connected to a native screen resource.
Und ein sichtbares Frame ist mit einem native screen verbunden.

Du musst selbst hin und her schieben. Mit einem MouseMotionListener und der Methode mouseDragged bemerkst du, wenn die Maus bewegt wird.
Wenn Du die Koordinaten mit Hilfe der SwingUtilities in das Koordinatensystem des Bildschirms umrechnest, solltest du auch keine Probleme haben mit dem Koordinatensystem des Frames (das sich dauernd ändert, während dem Schieben).
 

MPW

Top Contributor
Aha, damit werde ich mich mal beschäftigen, aber was mir nicht klar ist, es hätte doch trotzdem die System.out.println("false/true"); Anweisung erscheinen müssen, oder?
 

Illuvatar

Top Contributor
Beni hat gesagt.:
Wer lesen kann (und die API kennt) ist klar im Vorteil :wink:

Die Methoden heißen mouseEntered und mouseExited. Und wenn du das änderst kriegst du auch ne richtig schöne Exception von wegen displayable ;)

PS: Wieso isn das eigentlich so kacke? Das nervt schon irgendwie mit dem dass das net geht. Ich mach hin und wieder Methoden wie die da:
Code:
public void setUndecorated (boolean b)
{
  if (b != getUndecorated()){
    boolean displ = isDisplayable();
    if (displ)
      dispose();
    super.setUndecorated (b);
    if (displ)
      setVisible (true);
  }
}
aber das is ja irgendwie net das Wahre :?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben