[Applet] Gros gros problèmes d'affichage...

albest -  
choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,
je crois que c'est mon denrier message parceque je suis désespéré et tout mes posts précédents n'ont rien donné.
Voici l'objet des mes problèmes :
http://albest.free.fr/classes/sansnom1.htm
ou
http://albest.free.fr/classes.zip

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:

import java.applet.Applet;
import java.awt.*;
import java.net.*;
import java.lang.Object.*;
import java.util.ArrayList;
import java.awt.event.*;
import javax.swing.*;

//------------------------------------------------------------------------------
// 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);

/*Integer taille=new Integer(im.getHeight(null));
JOptionPane.showMessageDialog(null, taille.toString());*/

// 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);

cp = new Container();
act.add("North", cp);
cp.setLayout(new FlowLayout(FlowLayout.LEFT));
cp.add(Happy);
cp.add(Indifferent);
cp.add(Confident);
cp.add(jLabel1);

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());
}

/*public void paint(Graphics g)
{
//JOptionPane.showMessageDialog(null, "paintpan");
//setBackground(Color.blue);
//Icone Ico=new Icone((Icone)Liste.get(0));
g.drawRect(10,10,50,50);
for(int i=0;i<Liste.size();i++)
{
//((ImageIcon)Liste.get(i)).paintIcon(this,g,0,0);
((Icone)Liste.get(i)).paint(g);
g.drawRect(i, 10, 50, 50);
}
}*/

/*class Appuyeur extends MouseAdapter {
public void mousePressed(MouseEvent e) {
JOptionPane.showMessageDialog(null, "click");
Bouger = !Bouger;
}
}

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;

Icone(ImageIcon Bicon) {
//JOptionPane.showMessageDialog(null, "construct");
super(Bicon);
icon = Bicon;
addMouseListener(new Appuyeur());
addMouseMotionListener(new Dragueur());
setLocation(x, y);
repaint();
}

/*public void paint(Graphics g) {
//JOptionPane.showMessageDialog(null, "paint");
//super.paint(g);
icon.paintIcon(this, g, x, y);
}*/

class Appuyeur extends MouseAdapter {
public void mousePressed(MouseEvent e) {
Bouger = !Bouger;
if (Bouger) {
JOptionPane.showMessageDialog(null,
"getLocation().y=" + getLocation().y +
"e.getY()=" + e.getY());
setLocation(getLocation().x + e.getX() - 25,
getLocation().y + e.getY() - 25);
}
else {
x = getLocation().x;
y = getLocation().y;
}
}
}

class Dragueur extends MouseMotionAdapter {
public void mouseMoved(MouseEvent e) {
if (Bouger) {
setLocation(getLocation().x + e.getX() - 25,
getLocation().y + e.getY() - 25);
}
}
}
};
}

Aidez moi, j'ai vraiment besoin d'aide car j'y est passé des journées entières sans aucun résultats...

1 réponse

choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   2 106
 
salut

je vois que tu définis plusieurs fois les mêmes classes, dragueur et appuyeur

c'est quoi "Bouger"?

Chouba,
Tatatatala...  Chi Hua Hua!
0