package memory.chants;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.TitledBorder;
/**
* Une bordure composée de deux bordures :
* une première bordure extérieure est une cadre noir avec un texte en haut à gauche
* une deuxième bordure n'a pas de cadre mais comporte en bas au centre un autre texte.
* @author Patrice
*
*/
public class BordureDouble extends CompoundBorder
{
//les titres des bordures
private String titreHaut, titreBas;
//les bordures
private TitledBorder bordureHaut, bordureBas;
//le cadre extérieur
private static Border cadre = BorderFactory.createLineBorder(Color.black);
//la bordure sans cadre
private static Border vide = BorderFactory.createEmptyBorder();
//la police pour écrire le nom de l'oiseau
private static Font policeTitreHaut = new Font("Dialog",Font.BOLD,12);
private static Font policeTitreBas = new Font("Dialog", Font.ITALIC + Font.BOLD,12);
/**
* un constructeur avec deux titres
*
* @param args
*/
public BordureDouble(String t1, String t2)
{
//la bordure extérieure avec le texte en haut
titreHaut = t1;
bordureHaut = BorderFactory.createTitledBorder(cadre,t1);
bordureHaut.setTitleJustification(TitledBorder.LEFT);
bordureHaut.setTitleFont(policeTitreHaut);
bordureHaut.setTitleColor(Color.BLACK);
outsideBorder = bordureHaut;
//la bordure intérieure avec le texte
titreBas = t2;
bordureBas = BorderFactory.createTitledBorder(vide,t2);
//... en bas
bordureBas.setTitlePosition(TitledBorder.BOTTOM);
//... droite
bordureBas.setTitleJustification(TitledBorder.RIGHT);
bordureBas.setTitleColor(Color.BLACK);
bordureBas.setTitleFont(policeTitreBas);
insideBorder = bordureBas;
}
/**
* @return the titreHaut
*/
public String getTitreHaut()
{
return titreHaut;
}
/**
* @param titreHaut the titreHaut to set
*/
public void setTitreHaut(String titreHaut)
{
this.titreHaut = titreHaut;
bordureHaut.setTitle(titreHaut);
}
/**
* @return the titreBas
*/
public String getTitreBas()
{
return titreBas;
}
/**
* @param titreBas the titreBas to set
*/
public void setTitreBas(String titreBas)
{
this.titreBas = titreBas;
bordureBas.setTitle(titreBas);
}
public static void main(String[] args)
{
JFrame fenetre = new JFrame("test de bordure double");
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panneau = new JPanel();
panneau.setBackground(Color.LIGHT_GRAY);
BordureDouble bd = new BordureDouble("Essai","pour voir");
panneau.setBorder(bd);
panneau.setPreferredSize(new Dimension(600,400));
JButton bouton = new JButton("CLIC");
bouton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JPanel p = (JPanel) ((JButton)e.getSource()).getParent();
BordureDouble bd = (BordureDouble) p.getBorder();
bd.setTitreHaut(bd.getTitreHaut().equals("pair") ? "impair" : "pair");
bd.setTitreBas(bd.getTitreBas().equals("une fois") ? "deux fois" : "une fois");
p.repaint();
}});
panneau.add(bouton);
fenetre.add(panneau);
fenetre.pack();
fenetre.setVisible(true);
}
}