 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
HeidiWeber Guest
|
Posted: Tue May 08, 2007 9:09 pm Post subject: jDesktopPane1 und JInternalFrame |
|
|
Hallo,
ich habe mit Netbeans ein jDesktopPane1, ein JInternalFrame und eine
Menüleiste "zusammengeklickt". Auf der Menüleiste habe ich 2 Items.
Eines zum einblenden und eines zum ausblenden des JInternalFrames.
Für das Einblenden mache ich das so: infDatGroesse.setVisible(true).
Somit wird das JInternalFrame ja nur ausgeblendet. Es befindet sich,
mit all seinen Eingaben, noch im Speicher.
Wenn ich das JInternalFrame aber mit Dispose "beende", wird das
JInternalFrame einerseits ausgeblendet UND eben doch auch aus dem
Speicher entfernt? Ist das korrekt?
Wie kann ich solch ein JInternalFrame wieder einblenden? Mit
setVisible(true) geht das ja nicht mehr.
Vielen Dank an euch
cu
Heidi |
|
| Back to top |
|
 |
Andreas Eberhöfer Guest
|
Posted: Wed May 09, 2007 12:01 am Post subject: Re: jDesktopPane1 und JInternalFrame |
|
|
HeidiWeber schrieb:
| Quote: | Wenn ich das JInternalFrame aber mit Dispose "beende", wird das
JInternalFrame einerseits ausgeblendet UND eben doch auch aus dem
Speicher entfernt? Ist das korrekt?
|
Was spricht dagegen beim schließen nicht dispose aufzurufen? Was du
suchst ist jif.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE).
mfg
Andreas |
|
| Back to top |
|
 |
HeidiWeber Guest
|
Posted: Fri May 11, 2007 8:13 pm Post subject: Re: jDesktopPane1 und JInternalFrame |
|
|
Hi Andreas,
vielen Dank für die Ausführungen.
Wenn man ein JInternalFrame mit Dispose "schließt", kann man es nicht
mit setVisible(true) wieder anzeigen lassen.
Dazu ist folgendes nötig:
boolean hasInternalframe = false;
for(int i = 0; i < jDesktopPane1.getAllFrames().length && !
hasInternalframe; i++) {
// Absichern, daß das JInternalFrame Objekt nicht schon im
// Desktop existiert, weil sonst gibts ne Exception
hasInternalframe = jDesktopPane1.getAllFrames()[i] =infDatGroesse;
}
if(!hasInternalframe) {
jDesktopPane1.add(infDatGroesse);
infDatGroesse.show();
}
Wünsche dir ein schönes Wochenende
cu
Heidi |
|
| Back to top |
|
 |
Andreas Eberhöfer Guest
|
Posted: Fri May 11, 2007 9:07 pm Post subject: Re: jDesktopPane1 und JInternalFrame |
|
|
Hallo Heidi,
HeidiWeber schrieb:
| Quote: | Wenn man ein JInternalFrame mit Dispose "schließt", kann man es nicht
mit setVisible(true) wieder anzeigen lassen.
|
Stimmt ich muss zu meiner Schande gestehen, dass ich es nicht mit einem
JDesktopPane probiert habe.
Aber das was du da machst geht wesentlich kürzer:
//Ich geh mal davon aus, dass infDatGroesse dein JInternalframe ist
if(infDatGroesse.getParent() != jDesktopPane1)
{
jDesktopPane1.add(infDatGroesse);
infDatGroesse.setVisible(true);
}
Anscheinend wird durch das dispose ein
jDesktopPane1.remove(infDatGroesse) aufgerufen.
Nur so als Frage, wieso arbeitest du nicht mit dem HIDE_ON_CLOSE und
setVisible(true/false)? Deine ursprüngliche Motivation wegen dem dispose
gibt es ja nicht mehr und du könntest dir solche Hacks wie oben ersparen.
schönes Wochenende
Andreas |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|