nach setSize() wird JLabel nicht dargestellt

  • Themenstarter Themenstarter Rupert
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Rupert

Gast
Hallo, ich hoffe mir kann jemand weiterhelfen. Ich versuche, so ne kleine Popup-Uhr zu basteln, d.h. wenn man über das kleine Kästchen rechts oben "fährt", vergrößert sich dieses (JFrame) und man sollte das JLabel lesen können. Das funktioniert aber nicht, wieso? Habe alles Unwichtige auskommentiert, am besten code kurz compiliern & ausführen 😉. Es geht nur darum, dass das JLabel in diesem JFrame nach dem Vergrößern dargestellt wird. Bitte keine alternativen Lösungsvorschläge, das muss doch eigentlich so gehen.
Danke

Code:
// PopUpWatch.java

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

class PopUpWatch extends JFrame {
	
	private JLabel uhrzeit;
	private JPopupMenu menü;
	private JMenuItem mItem;
	
	public PopUpWatch() {
		
		Container cp = getContentPane();
		cp.setLayout( new FlowLayout() );
		setSize( 5, 5 );//kleines Kästchen...
		setLocation( getToolkit().getScreenSize().width - getWidth(), 0 );//...rechts oben
		setUndecorated( true );//kein Rand
		uhrzeit = new JLabel("Uhrzeit ;)");
		menü = new JPopupMenu();
		/*mItem = new JMenuItem("beenden");*/
		cp.add( uhrzeit );
		/*cp.add( menü );*/
		//menü.add( mItem ); //kommentiert, da sonst nicht funktioniert ??
		addMouseListener( new MouseAdapter() {
			public void mouseEntered( MouseEvent me ) {
				System.out.println("mouse entered");
				setSize( 150, 50 );//"richtige" Größe...
				setLocation( getToolkit().getScreenSize().width - getWidth(), 0 );//...rechts oben
			}
			/*public void mouseExited( MouseEvent me ) {
				System.out.println("mouse exited");
				try{Thread.sleep( 1000 );}catch(Exception e){} // 1 sek. "verzögerung"
				setSize( 5, 5 );//wieder kleines Kästchen...
				setLocation( getToolkit().getScreenSize().width - getWidth(), 0 );//...rechts oben
			}
			public void mouseReleased( MouseEvent me ) {
				menü.show (me.getComponent(), me.getX(), me.getY());//Menü wird aufge"poppt"
				System.out.println("PopUpMenü wird geöffnet");
			}*/
		} );
		
	}
	
	public static void main( String args[] ) {
		
		PopUpWatch puw = new PopUpWatch();
		puw.setVisible( true );
	}
	
}
[/code]
 
Hallöchen

Also wenn du setSize in der Methode addMouselistener aufrufen willst, bin ich der Meinung das du das so machen
musst

Code:
     addMouseListener( new MouseAdapter() { 
         public void mouseEntered( MouseEvent me ) { 
            System.out.println("mouse entered"); 
// Änderung ------------------------------------
            this.setSize( 150, 50 );//"richtige" Größe...
//--------------------------------------------------------- 
            setLocation( getToolkit().getScreenSize().width - getWidth(), 0 );//...rechts oben 
         } 
         /*public void mouseExited( MouseEvent me ) { 
            System.out.println("mouse exited"); 
            try{Thread.sleep( 1000 );}catch(Exception e){} // 1 sek. "verzögerung" 
// Änderung -----------------------------------------------
            this.setSize( 5, 5 );//wieder kleines Kästchen...
//------------------------------------------------------------- 
            setLocation( getToolkit().getScreenSize().width - getWidth(), 0 );//...rechts oben 
         } 
         public void mouseReleased( MouseEvent me ) { 
            menü.show (me.getComponent(), me.getX(), me.getY());//Menü wird aufge"poppt" 
            System.out.println("PopUpMenü wird geöffnet"); 
         }*/ 
      } ); 





    // Nicht vergessen
    PopUpWatch myPopUp = this;

An sonsten wird versucht setSize() am MouseAdapter aufzufrufen.

naja versuch wiegesagt mal so.
 
Hmm..das wars nicht, an sich funktioniert setSize() ja auch. MouseAdapter hat keine setSize() Methode.

Trotzdem Danke 🙂
 
So jetzt hab ichs...einfach mit validate() das Fenster zwingen, sich neu zu zeichnen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben