[Applet] Gros gros problèmes d'affichage...
albest
-
choubaka Messages postés 39986 Date d'inscription Statut Modérateur Dernière intervention -
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...
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...
A voir également:
- [Applet] Gros gros problèmes d'affichage...
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Affichage ips processeur graphique ✓ - Forum Matériel & Système
- Problème affichage fenêtre windows 10 - Guide
- Problème affichage page internet google chrome ✓ - Forum Google Chrome