Le composant Panel3D est un dérivé du composant Panel qui ajoute une bordure donnant un effet de relief. Nous aurons simplement à réécrire 3 méthodes : init, getInsets et paint.
La déclaration permet d'indiquer que la classe Panel3D est une classe dérivée de la classe Panel. Dans la méthode init nous nous contenterons de préciser la couleur du fond : gris clair.
import java.awt.*; public class Panel3D extends Panel { public Panel3D() { setBackground(Color.lightGray); }
Cette méthode nous permet de dessiner la bordure avec effet de relief.
public void paint(Graphics g) { g.setColor(Color.lightGray); g.draw3DRect(4,4,getSize().width-8-1,getSize().height-8-1,false); }
Pour éviter que les composants insérés dans le Panel3D n'effacent la bordure dessinée, nous imposons une marge grâce à la méthode getInsets.
public Insets getInsets() { return new Insets(8,8,8,8); }
Notre nouveau composant est prêt à fonctionner.
Nous commencerons par écrire une applet simple utilisant le composant Panel, puis nous remplacerons les composants Panel par des composants Panel3D.
L'applet contient un composant Panel dans lequel nous insérons les autres composants. Sa méthode init est :
public void init() { //tous les composants sont dans le Panel p setLayout(new BorderLayout()); Panel p=new Panel(); add("Center",p); //contenu de p p.setLayout(new GridLayout(3,1)); //ligne 1 Panel p1=new Panel(); p.add(p1); p1.add(new Label("Nom : ")); p1.add(new TextField(15)); //ligne 2 Panel p2=new Panel(); p.add(p2); p2.add(new Label("Prénom : ")); p2.add(new TextField(15)); //ligne 3 Panel p3=new Panel(); p.add(p3); p3.add(new Button("Envoyer")); }
Dans cette applet nous nous contentons de remplacer le premier composant Panel p par un Panel3D.
Panel3D p=new Panel();
Dans cette version de l' applet nous conservons le Panel p, mais nous remplaçons les Panel p1, p2 et p3 par des Panel3D.