begin process at 2010 02 09 15:47:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Multimédia

 > 

Java2D

 > 

Probleme pour Dessiner un graphics avec swing


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme pour Dessiner un graphics avec swing

vendredi 12 juin 2009 à 00:31:58 | Probleme pour Dessiner un graphics avec swing

Iko01

Bonjour à tous, voila actuellement je suis sur un petit projet de fin d'année qui consiste à réaliser le jeux "tours de Hanoï" par java, sauf problème je n'arrive pas à dessiner sur ma fenêtre JFrame des graphics, ca fait a peine un ans que j connais java, je d'abord appris a manipuler les méthodes graphcis, mais toute fois je n'arrive pas à gerer les methodes swing, pour tant j'ai bien essayé d'utiliser lé methodes paint() et paintComponent() mais ca ne marche tjs pas.

voila il est pt pas parfait le programme encore mais le principe est le suivant :
- avec une class hanoi (class principal) j'utilise ft d'une class Fenetre, avec encore deux autres type de class afin de pouvoir gerer les poteau puis les disque.
-pour le transferer des donnée j'ai choisi des vector pour les disque des poteau et un vector de poteau pour la class hanoi (toute fois il n'est pas encore complex à fin de pouvoir gerer les disque sur les poteau) car je suis encore bloké à comment dessiner les poteau.

voici les class principal apellé par le jeux :

public class Hanoi {

    /**
     * @param args the command line arguments
     */
   
    private final int hauteur_pile_max = 15;
    private int hauteur_init = 0;
    static private int nb_disque = 0;
    private int n;
    private boolean bot;
    private String deplacement;
    private Fenetre ft = new Fenetre ();
    private static Vector <Disque> d = new Vector ();
    private static Vector <Poteau> ptx = new Vector ();
    private final int delta_x = 15;
    private final int delta_y = 15;
   
   
    public static void solution (int hauteur,Vector<Disque> A,Vector<Disque> C,Vector<Disque> B,Fenetre ft1,Vector<Disque> resultat)
     {
     if(nb_disque>0){
     solution((nb_disque-1),A,B,C,ft1,resultat);
     resultat.addElement(A.get(nb_disque));
     resultat.addElement(C.get(nb_disque));
     solution((nb_disque-1),B,C,A,ft1,resultat);
     }
    }
   
    public Vector <Poteau> Poteaux(Vector <Disque> v){
        Vector <Poteau> Ptx = new Vector();
        for (int i = 0; i< 3; i++ ){
            switch (i){
                case 0 :Poteau A = new Poteau(v);
                        Ptx.add(i, A);
                case 1 :Poteau B = new Poteau(v);
                        Ptx.add(i, B);
                case 2 :Poteau C = new Poteau(v);
                        Ptx.add(i, C);
            }
           }
        return Ptx;
    }
    public Vector <Disque> Disque(int hauteur){
            Vector <Disque> DisqueP = new Vector();
            hauteur_init = hauteur;
            for (int i = 0; i<hauteur; i++ ){
                Disque nDisque = new Disque(hauteur_init);
                DisqueP.add(i, nDisque);
           }
        return DisqueP;
        }


    public static void main(String[] args) {
        Hanoi p = new Hanoi();
        p.ft.initFrame();
        Graphics g = p.ft.getGraphics();
        System.out.println("Entrez le nombre de Disque :");
        nb_disque = Input.readInt();
        d = p.Disque(nb_disque);
        ptx = p.Poteaux(d);
        p.ft.paintPoteau(g,ptx);
    }

}

// La class Fenetre

public class Fenetre extends JFrame {
   
    private Container contenaire = new Container();
    private JLabel nmbAnneauLabel = new JLabel();
    private JTextField nmbAnneauField = new JTextField();
    private JButton simulationBouton,confirmerBouton = new JButton();
    private JComponent Cp;
    private int nombreAnneau;
    private final int hauteur = 500;
    private final int largeur = 700;
    private final int delta_x = 15;
    private final int delta_y = 15;
    public Fenetre (){
        this.setVisible(true);
        this.toFront();
        this.setTitle("Tours d'hanoï");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(largeur, hauteur);
        setLocationRelativeTo(null);

    }

    public void initFrame(){

        contenaire = getContentPane();
        contenaire.setBackground(Color.white);
        contenaire.setLayout(null);

        simulationBouton=new JButton("commencer");
        simulationBouton.setBounds(500,15,150,25);
        simulationBouton.setBackground(Color.black);
        simulationBouton.setForeground(Color.red);
        contenaire.add(simulationBouton);

        confirmerBouton=new JButton("Voir Solution");
        confirmerBouton.setBounds(250,delta_y,200,25);
        confirmerBouton.setBackground(Color.black);
        confirmerBouton.setForeground(Color.red);
        contenaire.add(confirmerBouton);

        setVisible(true);
    }
    public void paintPoteau(Graphics g, Vector <Poteau> v)
    {
        Poteau A = new Poteau(v.elementAt(0).d);
        Poteau B = new Poteau(v.elementAt(1).d);
        Poteau C = new Poteau(v.elementAt(2).d);
        int x = 0;
        int y = 50;
        x = WIDTH/4 ;
        A.setCentre_x(x);
        A.setCentre_y(y);
        paint(g);
        A.drawPoteau(g);
        super.paint(g);
        x = WIDTH/2 ;
        B.setCentre_x(x);
        B.setCentre_y(y);
        B.drawPoteau(g);
        x = 3*WIDTH/4 ;
        C.setCentre_x(x);
        C.setCentre_y(y);
        C.drawPoteau(g);

        }
}

// les class poteau et disque

private int hauteur_pile;
    private int pos_x ;
    private int pos_y ;
    private final int hauteur = 20;
    private Disque dl ;
    Vector <Disque> d = new Vector ();
    private final int delta_x = 15;
    private final int delta_y = 15;
    private int largeurBase;
   
    public Poteau(Vector <Disque> v){
       this.hauteur_pile = v.size();
       d = v;
    }

    public void drawPoteau(Graphics g){
        //base poteau
           this.largeurBase = 2*d.size()*delta_x;
           g.setColor(Color.RED);
           g.fillRect(pos_x - d.size()*delta_x, pos_y + hauteur, largeurBase, hauteur);
        // Hauteur fexible par rapport au nombre de disque
           g.setColor(Color.BLACK);
           g.drawLine(pos_x, pos_y, pos_x, (pos_y+hauteur+(d.size()*delta_y)));
           System.out.println("Graphics: " + g );
    }
   
    public int getCentre_x(){
        return this.pos_x;
    }
    public int getCentre_y(){
        return this.pos_y;
    }
    public void setCentre_x(int x){
        this.pos_x = x;
    }
    public void setCentre_y(int y){
        this.pos_y = y;
    }
}

public class Disque {
    private final int delta_x = 15;
    private final int delta_y = 15;
    private int largeur = 0;
    private int nDisque;

    public Disque (int n){
        nDisque = n;
    }
    public void  PaintDisque(Graphics g, Poteau p){
        int x = 0;
        int y = 0;
        x = coin_haut_gauche_x (p);
        y = coin_haut_gauche_y (p);
        g.setColor(Color.GRAY);
        g.fillRect(x, y, 2*largeur*delta_x, delta_y);
        System.out.println("Graphics: " + g );
    }
    public int coin_haut_gauche_x (Poteau poteau_acc){
        int x = 0;
        x = poteau_acc.getCentre_x()- this.largeur*delta_x;
        return x;
    }
    public int coin_haut_gauche_y (Poteau poteau_acc){
        int y = 0;
        y = poteau_acc.getCentre_y()- nDisque*this.delta_y*2;
        return y;
    }
   
    public void removeDisque(Graphics g, Poteau poteau_acc){
        int x = 0;
        int y = 0;
        x = coin_haut_gauche_x(poteau_acc);
        y = coin_haut_gauche_x(poteau_acc);
        g.setColor(Color.WHITE);
        g.fillRect(x, y, largeur, delta_y);
    }
}

voila si quelqu'un pourrais prendre un petit instant pour m'expliquer un peu pourquoi mon struction paint() ca serais sympa!!

vendredi 12 juin 2009 à 10:25:01 | Re : Probleme pour Dessiner un graphics avec swing

neone

Bonjour,
ta pensé a super.paintComponent(g)?
boncourage.
vendredi 12 juin 2009 à 11:03:03 | Re : Probleme pour Dessiner un graphics avec swing

Iko01

voila depuis hier soir je me suis penche un peu dessus et fait quelque modifie,j'arrive a conclusion que je suis null en info lool^^ en fin bref je tentai alors de crée juste une ligne et la je vu que j'avais pt un gros probleme lool
J'ARRIVE MM PAS à dessiner une ligne sur Jframe :/

voila ce d'apres ce que j compris avec paint() :

public class Hanoi {
private Fenetre ft = new Fenetre ();

public class Fenetre extends JFrame {
    public Fenetre (){
        this.setVisible(true);
        this.toFront();
        this.setTitle("Tours d'hanoï");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(largeur, hauteur);
        setLocationRelativeTo(null);
    }
public void initFrame(Graphics g){
        paint(g);
        g.setColor(Color.BLACK);
        g.drawLine(50, 50, 350, 350);
        super.paint(g);
      }}
public static void main(String[] args) {
        Hanoi p = new Hanoi();
        Graphics g = p.ft.getGraphics();
        p.ft.initFrame(g);
}}

ca marche tjs pas...
ca l'air pas si compliqué mais j'avoue que ca je suis stocker, je n'arrive pas à dessiner mes poteau sur ct fenetre...


Cette discussion est classée dans : int, private, disque, vector, poteau


Répondre à ce message

Sujets en rapport avec ce message

Cherche desesperement comment bougez dans Frame [ par Iko01 ] Bonjour et désolé d'encombrer les forum avec des question toujours si conne mais je suis en fin de projet et je ne sais plus vers qui me tourné. En ef Supprimer "0" d'un tableau [ par Conurbateur ] Bonjour,Je cherche à créer une méthode pour supprimer les "0" dans un tableau, j'utilise donc cette méthode :import java.util.*;public class Test {    vector [ par gigi00 ] bonjour je veux que ce programme rempli aleatoirement  un tableau de 9 saans repition mais j ai un probleme  au niveau des colonnes import java.util.V mise à jour automatique de jtable à partir de BD [ par unaware ] Bonjour à tous, Je suis nouveau dans ce forum. Je fais appel à vos compétence car j'ai un petit souci. Je suis en train de développez une petite appli vecteur d'entier [ par nadap ] Salut à tous, j'ai un probleme avec un vecteur d'entier.j'inserte des int dans un vecteur et quand je veux les recupérer plus tard, il me parle d'inco Utiliser un JLabel Dynamique dans un event du meme JLabel [ par minosubb ] BonjourJ'ai crée une Map composée de 4 couches de 121 JLabel (pour l'instant, c'est ce que j'ai trouve pour gerer les passages de perso devant et derr problem pour classe vector [ par khazzab ] salut j'ai un fichier .txt  qui contient dans la premier partie des balises que je doit les eliminé  et la seconde partie est text simple par exeemple ligne en couleur d'une JTable par rapport a un boolean [ par mikomiko ] Bonjour chers collegues,je voudrais que les fonds de chaque ligne de ma JTable soit ou bleu ou rouge selon le boolean de la colonne "Dispo Location". dessin graphique 2d [ par huongthuy ] Bonjour tout le monde! je suis étudiant.j'ai un projet.Le projet demande les fonctions:la fonction linéaire y = ab, la fonction affine y = ax+b, <td c JTable et JCheckbox [ par greglover ] Bonsoir,je sais que l'on va me sauter dessus pour me dire que le sujet a déjà été traité 20 fois mais malgré l'aide que je trouve sur le net, je n'arr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales