Kort och snabb fråga: hur gör man för att endast en fönsterinstans av en JInternalFrame ska få vara öppen? Om man har ett fönster öppet och försöker öppna ett nytt av det i navigationsmenyn så skall det inte gå för att detta fönster redan är öppnat/aktivt.
Endast en instans av ett JInternalFrame
3 svar · 305 visningar · startad av Compusa
Jag vet inte, om det finns inbyggt stöd för detta i Java, men du kan ju mappa varje fönster med ett namn, och lagra namnet i en Vector, om den är öppen. Om du har mappat ett fönster till "login" t ex, så kollar du om "login" finns i Vectorn. Finns den inte så kan du lugnt skapa en ny instans.
Kom bara ihåg att ta bort mappningen från Vector, ifall du stänger fönstret.
EDIT: stavfel
Du kan göra klassen till en Singleton så finns det bara en instans av klassen under programmets livstid.
Ett mycket enkelt exempel,
class MyWin
{
private static MyWin myWin=new MyWin();
private boolean isOpen=false;
private MyWin()
{
}
public MyWin getInstance()
{
return(myWin);
}
public void showMyWin()
{
isOpen=true;
}
public void hideMyWin()
{
isOpen=false;
}
public boolean isOpen()
{
return(isOpen);
}
}
Koden för isOpen=false bör finnas i någon actionListner som anroppas när fönstret stängs och när du tar showWindow kanske du ska ha någon reset funktion där också som återställer fönstret till någon form av default läge (det som du i vanliga fall skulle göra i konstruktorn).
/Viktor
Stort tack för svaren, ska kika om jag kan få det att fungera.