Je veux afficher deux (ou plus) JFrames en même temps.
Lorsque j'en ferme un (utilisez le bouton de fermeture par défaut), les autres images doivent rester visibles.Fermer un JFrame sans en fermer un autre?
Comment puis-je faire cela?
Je veux afficher deux (ou plus) JFrames en même temps.
Lorsque j'en ferme un (utilisez le bouton de fermeture par défaut), les autres images doivent rester visibles.Fermer un JFrame sans en fermer un autre?
Comment puis-je faire cela?
Si vous ne pas voulez que votre demande de mettre fin lorsqu'un JFrame
est fermé, utilisez
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
au lieu de
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
De l'documentation:
DO_NOTHING_ON_CLOSE
(défini dans WindowCons tants): Ne faites rien; exiger que le programme gère l'opération dans la méthode windowClosing d'un objet WindowListener enregistré.HIDE_ON_CLOSE
(défini dans WindowConstants): masque automatiquement le cadre après l'appel de tout objet WindowListener enregistré.DISPOSE_ON_CLOSE
(défini dans WindowConstants): Masquez et disposez automatiquement le cadre après l'appel des objets WindowListener enregistrés.EXIT_ON_CLOSE
(défini dans JFrame): Quittez l'application à l'aide de la méthode System exit. Utilisez-le uniquement dans les applications.Ce fut ma réponse avant que la question a été clarifiée, pourrait encore être utile:
Vous pouvez utiliser setVisible(false)
sur votre JFrame
si vous souhaitez afficher la même image à nouveau.
Sinon, appelez dispose()
à remove all of the native screen resources.
Cela vous aide-t-il?
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TwoJFrames {
public static void main(String[] args) {
int nb = 4;
if (args != null && args.length > 0) {
nb = Integer.parseInt(args[0]);
}
final int frameCount = nb;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < frameCount; i++) {
JFrame frame = new JFrame("Frame number " + i);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel p = new JPanel(new BorderLayout());
p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER);
frame.setContentPane(p);
frame.setSize(200, 200);
frame.setLocation(100 + 20 * i, 100 + 20 * i);
frame.setVisible(true);
}
}
});
}
}
c'est utile, merci! – Keating
Merci, mais je ferme la fenêtre avec le bouton de fermeture dans le coin supérieur droit. Il n'utilise pas définitivement setVisible (false) et doit arrêter le thread. – Keating
Je pense que je dois passer outre mothed, je ne sais pas quel mothed mais je crois que ce n'est pas la mothed de fermeture. – Keating
Je ne suis pas sûr de ce que vous essayez d'atteindre, pourriez-vous s'il vous plaît modifier votre question et ajouter des informations sur ce que vous essayez de faire et ce qui ne fonctionne pas? –