Solution non exacte!!!!

Résolu/Fermé
marwamrewa Messages postés 141 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 25 décembre 2014 - Modifié par marwamrewa le 1/05/2013 à 15:34
marwamrewa Messages postés 141 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 25 décembre 2014 - 1 mai 2013 à 17:34
Bonjour à tous , je voudrais faire une JFrame qui contient un panel dans la partie est qui contient 4 boutons"ugras>up left right dwan" pour déplacer l'oval dans le sens indiquer voici mon essai j'attend votre aide et merci d'avance



**********************************************************************
import java.awt.*;
import java.awt .Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class Fenetre extends JFrame implements ActionListener{
private JPanel p,p1,p2,p3;
private JButton b1,b2,b3 ,b4;
private int hight=140;
private int width=400;
private int x=200;
private int y=70/2;

public Fenetre()
{
setBackground(Color.BLUE);

p=new JPanel();


p1=new JPanel();
b1=new JButton("UP");
b1.addActionListener(this);
p1.add(b1);
p.add(p1, BorderLayout.NORTH);


p2=new JPanel();
b2=new JButton("LEFT");
b2.addActionListener(this);
p2.add(b2);
b3=new JButton("RIGHT");
b3.addActionListener(this);
p2.add(b3);
p.add(p2, BorderLayout.CENTER);

p3=new JPanel();
b4=new JButton("DOWN");
b4.addActionListener(this);
p3.add(b4);
p.add(p3, BorderLayout.SOUTH);

this.add(p,BorderLayout.SOUTH);








}


@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==b1){
y-=10;

repaint();
}
else if(e.getSource()==b2){
x=-10;

repaint();

}
else if(e.getSource()==b3){
x=+10;

repaint();
}
else if(e.getSource()==b4){
y+=10;

repaint();
}
// TODO Auto-generated method stub

}
public void paint (Graphics g){
g.setColor(Color.RED);
g.fillOval(x,y, 100, 100);
}
public static void main(String [] args ){
JFrame f=new Fenetre();
f.setSize(400,140);
f.setVisible(true);


}

}
*********************************************************************

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 mai 2013 à 16:13
Il faut que tu ais un minimum de méthode avant de coder n'importe comment !

Par exemple, pourquoi appeler tes boutons b1, b2, b3, et b4 ? Il faut leur donner des noms explicites ! Ici par exemple tu peux les appeler up, down, left, right, ce sera bien plus clair.

On peut également parler de tes JPanel, ils ne servent à rien, tu peux tous les supprimer !

Pour ce qui est de ton implements ActionListener, ça n'a pas vraiment de sens de dire que c'est à la fenêtre de détecter quand tu appuies sur un bouton. En fait, ce sont les boutons eux même qu'il faut contrôler.

Enfin, pour ta méthode paint, il ne faut pas oublier de faire appel à la méthode parente super.paint sinon l'affichage ne fera pas ce que tu veux.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton;
import javax.swing.JFrame;

public class Fenetre extends JFrame
{
    private static final long serialVersionUID = 1;
    
    private final int WIDTH=500, HEIGHT=500, RADIUS=50, DELTA=10;
    private int x=WIDTH/2, y=HEIGHT/2;
    
    public Fenetre()
    {
        getContentPane().setBackground(Color.BLUE);
        
        JButton up=new JButton("UP");
        up.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                y -= DELTA;
                repaint();
            }
        });
        add(up,BorderLayout.NORTH);
        
        JButton down=new JButton("DOWN");
        down.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                y += DELTA;
                repaint();
            }
        });
        add(down,BorderLayout.SOUTH);
        
        JButton left=new JButton("LEFT");
        left.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                x -= DELTA;
                repaint();
            }
        });
        add(left,BorderLayout.WEST);
        
        JButton right=new JButton("RIGHT");
        right.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                x += DELTA;
                repaint();
            }
        });
        add(right,BorderLayout.EAST);
        
        setSize(WIDTH,HEIGHT);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    public void paint(Graphics g)
    {
        super.paint(g);
        g.setColor(Color.RED);
        g.fillOval(x-RADIUS,y-RADIUS, 2*RADIUS, 2*RADIUS);
    }
    
    public static void main(String[] args)
    {
        new Fenetre();
    }
}
0
marwamrewa Messages postés 141 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 25 décembre 2014 3
1 mai 2013 à 16:47
merciiiiiiiiiiiiiiiiii :)
0
marwamrewa Messages postés 141 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 25 décembre 2014 3
Modifié par marwamrewa le 1/05/2013 à 17:35
désolé , je vous dérange encore une fois est vous connaissez un site qui contient des exercices corrigés sur threads et graphics et merci d'avance :)
0