Label sichtbar machen



  • Hi,

    ich muss Minesweeper mit Swing nachprogrammieren.
    Dazu hatte ich eine Feld Klasse die ein Button und ein Label enthält, wenn
    nun geklickt wird wird der Button unsichtbar und das Label erscheint.
    Nur wenn ich einen Text auf das Label schreibe erscheint der nicht nur warum?
    (benutze das GridLayout)
    So sieht die Methode aus

    public void aufedcken() 
    	{
    		this.zustand = Feldzustaende.aufgedeckt;		;
    		if (this.bombenNachbarn.size() > 0)
    			this.label.setText(String.valueOf(this.bombenNachbarn.size()));
    
    		this.button.setVisible(false);
    		this.label.setVisible(true);
    
    		this.hasChanged();
    		this.notifyObservers(false);		
    	}
    


  • Hi

    ich vermut mal das der butten / label relativ klein ist oder? versuchs mal etwas grösser ggf liegts am border, das der zu gross ist und somit nicht mehr viel vom button / label übrig bleibt um text darauf darzustellen.

    ggf gui refresch problem, was ich aber weniger glaube.

    gruss



  • Hi,

    lol hatte vergessen das label hinzuzufügen 🙂
    Nur jetzt ist das Problem das beides angezeigt wird, aber will das das
    label unter den Button liegt.
    Oder muss ich dazu das Feld von Component ableiten und das hinzufügen und den rest per hand erledigen?



  • Problem gelöst aber ein neues ist da 🙂

    Warum reagiert der Observer nicht auf das notify?

    public static void main(String[] args) 
    	{
    		Minesweeper minesweeper = new Minesweeper();
    		Settings.getInstance().setObserver(minesweeper);
    	}
    
    	public Minesweeper()
    	{
    		Show();
    	}
    
    	void Show()
    	{
    		ui = new UI();
    	}
    
    	public void update(Observable sender, Object o)
    	{
    		System.exit(0);
    	}
    

    hier leg ich das Spielobjekt an

    public UI()
    		{
    			super("Minesweeper");
    			InitializeComponent();
    			for (Feld f : Settings.getInstance().getFeldList())
    			{
    				f.addObserver(Settings.getInstance().getObserver());
    				f.findeNachbarn();
    			}
    		}
    

    hier füge ich die observer hinzu

    public void aufedcken() 
    	{
    		this.zustand = Feldzustaende.aufgedeckt;		
    		if (this.bombenNachbarn.size() > 0)
    			this.button.setText(String.valueOf(this.bombenNachbarn.size()));
    		this.button.setEnabled(false);	
    		//this.button.setVisible(false);
    		//this.label.setVisible(true);
    
    		this.hasChanged();
    		this.notifyObservers(false);		
    	}
    

    und hier rufe ich das auf.

    Nur ist die Frage Observable ist die abstrakte Basisklasse,
    wird das auch vererbt?


Anmelden zum Antworten