Fenêtre bloquante

Soyez le premier à donner votre avis sur cette source.

Vue 4 166 fois - Téléchargée 528 fois

Description

Pour créer une fenêtre d'information avec Swing, tout le monde connait JOptionPane. Cette classe permet das 90% des cas de créer une fenêtre d'informations qui bloque l'écran tant qu'elle n'a pas été validée.

Je vous propose une classe qui étend JFrame et qui permet de réaliser la même chose. De cette manière, vous pourrez créer des fenêtres plus complexes que celles proposées par JOptionPane.

Source / Exemple :


package fr.julien.wpp;

import java.awt.Component;

import javax.swing.JFrame;

/**

  • <b>FenetreBloquante permet de créer une JFrame qui reste au premier plan</b>
  • <p>
  • Cette classe est caractérisée par les informations suivantes :
  • <ul>
  • <li>La fenêtre mère qui est désactivée et réactivée une fois la fenêtre fermée</li>
  • </ul>
  • </p>
  • <p>
  • Cette classe est une classe fille de JFrame, il est donc possible de l'éditer comme une
  • JFrame. Le traitement qui bloque et débloque l'accès aux autres fenêtres est géré avec les
  • evenements setVisible et dispose. Il est donc possible d'utiliser cette classe comme une JFrame
  • normale sans se soucier du blocage et du déblocage.
  • </p>
  • @author Julien
  • @version 1.0
*
  • /
public class FenetreBloquante extends JFrame { /**
  • identifiant pour la sérialisation
  • /
private static final long serialVersionUID = -7161748894719587965L; /**
  • booleen permettant d'arrêter le thread qui fait passer la fenêtre au premier plan
  • /
private boolean actif; /**
  • La fenêtre mère qui doit être bloquée
  • /
private Component mere; /**
  • <b>Constructeur de FenetreBloquante</b>
  • @param titre
  • Le titre de la fenêtre
  • @param mere
  • La fenêtre à bloquer (peut être null)
  • /
public FenetreBloquante(String titre, Component mere){ this.mere=mere; } @Override public void dispose(){ actif=false; if(mere!=null){ mere.setEnabled(true); } super.dispose(); } @Override public void setVisible(boolean visible){ super.setVisible(visible); actif=visible; if(mere!=null){ mere.setEnabled(!actif); } if(actif){ new Thread(){ @Override public void run(){ while(actif){ requestFocusInWindow(); toFront(); } } }.start(); } } }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
286
Salut,

Très bonne info, je ne connaissais pas cette classe, je regarderai ca demain.

a+
Messages postés
4
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
20 mai 2012

Bonjour
si vous désirez réaliser une fenêtre "bloquante" en swing, il existe la classe JDialog qui est la pour cela, il suffit de positionner modal a true juste avant l'affichage. setModal(true)
A moins que bloquante ne signifie pas modal pour vous ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.