En fait je voudrais faire une applet décomposé en 3 zones, celle du milieu est la plus importante. Quand vous cliquez sur un bouton du bas, un jlabel doit apparaître sur le panel du milieu (la one bleu).
Premier bug : il n'apparait que si l'on clique sur un des boutons du dessus...
Deuxième bug : Quand vous cliquez sur un bouton du dessus alors que vous avez déplaces les boutons, il revienne à leur place d'origine.
Voici le code :
Code:
//------------------------------------------------------------------------------
// Classe principale
public class ImageSimple extends JApplet {
private JLabel jLabel1;
private Container cp, cp2, cp4;
private Pan cp3; // panel du milieu
private JButton Happy, Indifferent, Confident; // boutons des catégories principales
private Bouton Cong;
private JButton BtOk = new JButton("ok");
public Container act;
Icone Ico;
public Image im, im2, im3;
// MediaTracker, pour suivre le chargement des images
MediaTracker mt = null;
// Liste chainée
private ArrayList Liste = new ArrayList();
private String requete;
public void init() {
jLabel1 = new JLabel("Cliquer sur un bouton");
// Chargement des images représentant les catégories principales
im = getImage(getCodeBase(), "happy.gif");
im2 = getImage(getCodeBase(), "indifferent.gif");
im3 = getImage(getCodeBase(), "confident.gif");
// Initialiser le MediaTracker
mt = new MediaTracker(this);
// Démarrer le suivi du chargement d'images
mt.addImage(im, 0);
mt.addImage(im2, 0);
mt.addImage(im3, 0);
while (!mt.checkAll(true)) {
getGraphics().drawString("Chargement en cours...", 10, 20);
repaint(100);
}
// Enlever les images du MediaTracker
mt.removeImage(im);
mt.removeImage(im2);
mt.removeImage(im3);
// Conception des boutons à partir des images
Happy = new JButton(new ImageIcon(im));
Indifferent = new JButton(new ImageIcon(im2));
Confident = new JButton(new ImageIcon(im3));
// ajoute les écouteurs aux boutons
Happy.addMouseListener(new Appuyeur());
Confident.addMouseListener(new Appuyeur());
Indifferent.addMouseListener(new Appuyeur());
BtOk.addMouseListener(new AppuyeurOk());
// Création et répartition des containers
act = getContentPane();
act.setBackground(Color.white);
act.setLayout(new BorderLayout(5, 5));
// ajout des 3 containers
cp3 = new Pan();
act.add("Center", cp3);
cp2 = new Container();
act.add("South", cp2);
cp2.setLayout(new FlowLayout(FlowLayout.LEFT));
}
class Appuyeur extends MouseAdapter {
public void mousePressed(MouseEvent e) {
//jLabel1.setText("ok");
//JOptionPane.showMessageDialog(null, "actionperformed");
jLabel1.setText(e.getSource().toString());
cp2.removeAll(); // efface tous les éléments déja présents dans le container
if (e.getSource().equals(Happy))
im = getImage(getCodeBase(), "congratulate.gif");
else
im = getImage(getCodeBase(), "disgusted.gif");
while (!mt.checkAll(true)) {
getGraphics().drawString("Chargement en cours...", 10, 20);
repaint(100);
}
mt.removeImage(im);
Cong = new Bouton(new ImageIcon(im));
cp2.add(Cong);
cp2.add(BtOk);
}
}
class AppuyeurOk extends MouseAdapter {
public void mousePressed(MouseEvent e) {
// redirection vers une autre page...
}
}
//------------------------------------------------------------------------------
// classe pour les boutons du dessous
class Bouton extends JButton implements ActionListener {
private ImageIcon icon;
Bouton(ImageIcon Bicon) {
super(Bicon); // appel le constructeur de JButton
icon = Bicon;
addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
cp3.Ajout(icon); // ajout de l'icone au panel du milieu
}
};
//------------------------------------------------------------------------------
// classe pour le panel du milieu
class Pan extends JPanel {
private boolean Bouger = false;
public Pan() {
setBackground(Color.blue);
//addMouseListener(new Appuyeur());
//addMouseMotionListener(new Dragueur());
}
class Dragueur extends MouseMotionAdapter {
public void mouseMoved(MouseEvent e) {
if (Bouger)
( (Icone) Liste.get(0)).setLocation(getLocation().x + e.getX() - 42,
getLocation().y + e.getY() - 30);
}
}*/
public void Ajout(ImageIcon img) {
JOptionPane.showMessageDialog(null, "ajout");
Icone Ico = new Icone(img);
add(Ico); // ajoute l'icone au panel
//add(new JButton("oki"));
Liste.add(Ico); // ajoute l'icone à la liste chainée
/*Integer ent=new Integer(Liste.size());
JOptionPane.showMessageDialog(null, ent.toString());
for(int i=0;i<Liste.size();i++)
{
Icone ico=(Icone)(Liste.get(i));
JOptionPane.showMessageDialog(null, Liste.get(i).toString());
ent=new Integer(((Icone)(Liste.get(i))).x);
JOptionPane.showMessageDialog(null, ent.toString());
}*/
}
};
//------------------------------------------------------------------------------
// classe pour chaque icone placé dans le canvas principal
class Icone extends JLabel {
private ImageIcon icon;
private boolean Bouger = false;
public int x = 0, y = 0;
public int NumObjet = 0;