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 auspublic 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?