2011-01-10 7 views
1

Ich habe eine Hauptklasse, die einige Panel und einige Tasten enthält, und es gibt eine andere Klasse, über die ich die Sichtbarkeit von Schaltflächen in der Hauptklasse festlegen möchte.Einstellung Sichtbarkeit von jButton einer Klasse aus einem anderen

Ich habe in Hauptklasse wie eine Funktion setzen Sichtbarkeit hinzugefügt:

// This is my main class 
public void setVisibility(boolean flag) 
{ 
    mybutton.setVisible(flag); 
} 

// this is class which calls the method, 
my_constructor.setVisibility(false); 

aber das funktioniert nicht, jemand helfen kann?

+1

Können Sie in Ihrem Beispiel noch mehr Code bereitstellen? Dies sollte auch ohne Aufruf von repaint() gut funktionieren (invalidate() wäre eigentlich besser!). Vielleicht überprüfen Sie Ihre Threads, wenn der EDT nicht irgendwo gehalten wird? –

Antwort

0

Haben Sie nach dem Einstellen der Sichtbarkeit versucht, das Panel neu zu streichen?

// This is my main class 
public void setVisibility(boolean flag) 
{ 
    mybutton.setVisible(flag); 
    myPanel.repaint(); 
} 
+0

Versucht .... aber dint hilfe ..... – Shital

0

Ist Ihr Aufruf der setVisibility (boolean) -Methode auf dem EventDispatcherThread? (kann nicht aus dem kleinen Code, den Sie gepostet haben, unterscheiden).

Runnable runnable = new Runnable() { 
    public void run() { 
     setVisibility(flag); 
    } 
}; 

EventQueue.invokeLater(runnable); 

Ein weiterer kleiner Punkt ist, dass Sie einen Anruf an die setVisible() -Methode mit einem Verfahren namens setVisibility Verkapselung(). Wenn ich diesen Code nach dir pflegen müsste, würde ich deinen Namen verfluchen :-) IMHO, mach einfach den Methodennamen gleich.

Verwandte Themen