Fenêtre bloquante

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

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.