Applet (de dessin) qui presente un exemple sur les panels et les composants graphiques

Contenu du snippet

applet (de dessin) qui presente un exemple sur les panels,
quelques composants (leurs placements ds les panels avec tratement d'evennements biensur),
pour dessiner ds les panels p1 et p23 j'ai fait 2 classes (extends Panel) comportant chacune sa propre
methode "paint", autre facon: on peu faire une seule methode "paint" pour tout l'applet mais avec
plusieurs contextes graphiques; 1 context pour chaque panel ca doit ressembler a ca:
public void paint(Graphics g)
{ Graphics g1,g2,g3...;
g1=1er_Panel.getGraphics();
g1.setColor(couleur);
...
g2=2eme_Panel.getGraphics();
...
g1.drawLine(a,b,c,d)...etc
}
je ne sais pas laquelle des deux facons est optimale,
et j'espere que tt ca pourra etre util. */

Source / Exemple :


/*
un code html de base qui dimentionne l'applet:
<HTML>
<CENTER>
<H4></H4>
<APPLET  CODE = AppletdeDessin.class 
         WIDTH = 500
         HEIGHT = 400>
</APPLET>
</CENTER>
</HTML>

  • /
import java.applet.*; import java.awt.*; import java.awt.event.*; public class AppletdeDessin extends Applet implements ActionListener, AdjustmentListener, ItemListener { Panel p1, p2,p21,p22,p23; Color col; String color="bleu"; Button b1, b2,b3; int lineX = 0, l=1, lineY ; Label lb1; Checkbox cb1,cb2,cb3; CheckboxGroup cg = new CheckboxGroup(); Scrollbar sb; boolean clearFlag = true, oval = false; public void init() { col = new Color(0,0,255); setLayout(new GridLayout(1,2)); //******************** 1er panel p1 ******************** p1=new linePanel(); p1.setLayout(new BorderLayout()); p1.setBackground(Color.pink); p1.setForeground(Color.blue); sb = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 100); sb.addAdjustmentListener(this); p1.add(sb, BorderLayout.SOUTH); sb.setEnabled(false); add(p1); //******************** p2 contenant a son tour 3 autres panels******************** p2=new Panel(); p2.setLayout(new GridLayout(3,1)); p2.setBackground(Color.gray); p2.setForeground(Color.black); p21=new Panel(); p21.setBackground(Color.orange); p21.setLayout(new BorderLayout()); lb1=new Label("couleur choisie:"+color, Label.CENTER); Choice ch = new Choice(); ch.addItem("blanc"); ch.addItem("rouge"); ch.addItem("gris"); ch.addItem("vert"); ch.addItem("bleu"); ch.addItem("jaune"); ch.addItem("orange"); ch.select("bleu"); ch.addItemListener(this); p21. add(ch,"North"); //Ajout de composant p21.add(lb1); p2.add(p21); p22=new Panel(); p22.setLayout(new BorderLayout()); p22.setBackground(Color.gray); p22.setForeground(Color.black); cb1 = new Checkbox(" epaisseur 1pics",cg,true); cb1.addItemListener(this); cb2 = new Checkbox(" epaisseur 3pics",cg,false); cb2.addItemListener(this); cb3 = new Checkbox(" epaisseur 5pics",cg,false); cb3.addItemListener(this); b1 = new Button("dessiner"); b1.addActionListener(this); b2 = new Button("ne pas dessiner"); b2.addActionListener(this); b2.setEnabled(false); Panel N=new Panel(); Panel C=new Panel(); N.setLayout(new GridLayout(1,2)); // N.setForeground(Color.black); C.setLayout(new GridLayout(3,1)); //C.setBackground(Color.gray); /* les setBackground() et les setForeground() des containers sont inutils en arriere plan parceque le composant (pouvant etre lui meme un container) prend tte la place qui lui est donnee*/ C.setForeground(Color.black); N.add(b1); N.add(b2); C.add(cb1); C.add(cb2); C.add(cb3); p22.add(N, BorderLayout.NORTH); //Ajout de composant autrement p22.add(C, BorderLayout.CENTER); p2.add(p22); p23=new ovalPanel(); p23.setLayout(new BorderLayout()); p23.setBackground(Color.black); p23.setForeground(Color.blue); b3 = new Button("cercle"); b3.addActionListener(this); p23.add(b3, BorderLayout.WEST); b3.setForeground(Color.black); b3.setEnabled(false); p2.add(p23); add(p2); }//init() public void adjustmentValueChanged(AdjustmentEvent e) { lineY=p1.getSize().height/2; if(sb == (Scrollbar)e.getSource()) lineX = e.getValue()*p1.getSize().width/sb.getMaximum(); p1.repaint(); } public void itemStateChanged(ItemEvent e) { String acm = (String)e.getItem(); if("blanc".equals(acm)) {col = Color.white; color= " blanc";} else if("rouge".equals(acm)) {col = Color.red; color= " rouge"; } else if("gris".equals(acm)) {col = Color.gray; color= " gris"; } else if("vert".equals(acm)) {col = Color.green; color= " vert"; } else if("bleu".equals(acm)) {col = Color.blue; color= " bleu"; } else if("jaune".equals(acm)) {col = Color.yellow; color= " jaune"; } else if("orange".equals(acm)) {col = Color.orange; color= " orange"; } else if (cg.getSelectedCheckbox() == cb1) {cb1.setEnabled(true);l=1;} else if (cg.getSelectedCheckbox() == cb2) {cb2.setEnabled(true);l=3;} else if (cg.getSelectedCheckbox() == cb3) {cb3.setEnabled(true);l=5;} p1.setForeground(col); p23.setForeground(col); lb1.setText("couleur choisie:"+color); if(!clearFlag) {p1.repaint();p23.repaint();} } public void actionPerformed(ActionEvent e) { String acm = e.getActionCommand(); if("dessiner".equals(acm)) clearFlag = false; if("ne pas dessiner".equals(acm)) clearFlag = true; if("cercle".equals(acm)) oval = !oval; b1.setEnabled(clearFlag); b2.setEnabled(!clearFlag); b3.setEnabled(!clearFlag); sb.setEnabled(!clearFlag); p1.repaint(); p23.repaint(); } class linePanel extends Panel { public void paint(Graphics g) {if(!clearFlag) {for(int i=1;i<=l;i++) g.drawLine(0,lineY+i,lineX,lineY+i); //if(l==1) g.drawLine(0,lineY,lineX,lineY); // else g.fillRect(0,lineY,lineX,l); }} } class ovalPanel extends Panel { public void paint(Graphics g) {if(!clearFlag && oval) g.drawOval(p23.getSize().width/2-p23.getSize().height/4, p23.getSize().height/4,p23.getSize().height/2,p23.getSize().height/2); } } }//AppletdeDessin

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.

Du même auteur (cs_optimal)