Solution non exacte!!!!
Résolu
marwamrewa
Messages postés
141
Date d'inscription
Statut
Membre
Dernière intervention
-
marwamrewa Messages postés 141 Date d'inscription Statut Membre Dernière intervention -
marwamrewa Messages postés 141 Date d'inscription Statut Membre Dernière intervention -
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);
}
}
*********************************************************************
**********************************************************************
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);
}
}
*********************************************************************
A voir également:
- Solution non exacte!!!!
- Trouver mon adresse exacte - Guide
- Driverpack solution - Télécharger - Divers Utilitaires
- Solution prs chronopost - Forum Mobile
- Ou est charlie solution tome 1 - Forum Loisirs / Divertissements
- My sims ds solution ✓ - Forum Jeux vidéo
3 réponses
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.
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(); } }