package levy.daniel.application.presentation.desktop.jframe;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* class AfficheurFrame :
* Classe applicative permettant d'instancier et d'afficher une JFrame.
* - Possède une méthode main(...) permettant
* de la lancer comme une application Java.
* - Affiche la JFrame dans l'Event Dispatch Thread (EDT).
*
*/
public final class AfficheurFrame {
// ************************ATTRIBUTS************************************/
/**
* LOG : Log : Logger pour Log4j (utilisant commons-logging).
*/
@SuppressWarnings("unused")
private static final Log LOG = LogFactory.getLog(AfficheurFrame.class);
// *************************METHODES************************************/
/**
* method CONSTRUCTEUR AfficheurFrame() :
* CONSTRUCTEUR D'ARITE NULLE.
* Constructeur private pour bloquer l'instanciation externe.
*
*/
private AfficheurFrame() {
super();
} // Fin de CONSTRUCTEUR D'ARITE NULLE.________________________________
/**
* method creerEtAfficherFrame() :
* Instancie, décore et affiche une JFrame.
*
*
* @return : JFrame : JFrame affichée.
*/
public static JFrame creerEtAfficherFrame() {
/* Instanciation d'une JFrame. */
final JFrame frame = new JFrame();
/* Création d'un JPanel pour décorer la JFrame. */
final JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
/* Création d'un JLabel pour égayer le JPanel. */
final JLabel label = new JLabel("CA MARCHE");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
label.setBackground(Color.WHITE);
label.setOpaque(true);
label.setPreferredSize(new Dimension(100, 40));
label.setMinimumSize(new Dimension(100, 40));
/* Ajout du JLabel au JPanel. */
panel.add(label, new GridBagConstraints());
/* Coloration et dimensionnement du panel. */
panel.setBackground(Color.BLUE);
panel.setPreferredSize(new Dimension(150, 100));
panel.setMinimumSize(new Dimension(150, 100));
/* Passe un GridBagLayout au ContentPane de la JFrame . */
frame.getContentPane().setLayout(new GridBagLayout());
/* Ajout du JPanel à la JFrame. */
frame.getContentPane().add(panel, new GridBagConstraints());
/* Ferme l'application lorsque l'on ferme la fenêtre. */
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* Met en place la JFrame. */
frame.pack();
/* Dimensionne la JFrame. */
frame.setSize(200, 150);
/* JFrame redimensionnable. */
frame.setResizable(true);
/* JFrame centrée au mileu de l'écran. */
frame.setLocationRelativeTo(null);
/* Affichage de la JFrame. */
frame.setVisible(true);
return frame;
} // Fin de creerFrame().______________________________________________
/**
* method main() :
* Point d'entrée de l'application.
* Instancie, décore et affiche une JFrame.
* - Ouvre un Thread EDT dédié à l'affichage.
*
*
* @param args : String[].
*/
public static void main(final String[] args) {
/* Utilise le Event Dispatch Thread (EDT). */
SwingUtilities.invokeLater(new Runnable() {
/**
* {@inheritDoc}
*/
@Override
public void run() {
/* Instancie, crée et affiche la JFrame dans le Thread EDT. */
creerEtAfficherFrame();
} // Fin de Run().____________________________
}); // Fin de new Runnable()._______________________________
} // Fin de main(...)._________________________________________________
} // FIN DE LA CLASSE AfficheurFrame.----------------------------------------