Swing

Résolu
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010 - 8 août 2010 à 16:08
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010 - 9 août 2010 à 00:06
j'ai deux classes, GrapheGui et Controleur. Dans la première, j'ai une simple interface graphique et dans la deuxième un écouteur de la souris. ce que je veux faire c'est en gardant cette architecture, lorsque je clique sur l'interface graphique avec un bouton de la souris, un bouton s'ajoute. voilà ma source
GrapheGui
public class GrapheGui extends JFrame{

    public static void main(String[] args){
        GrapheGui j=  new GrapheGui("yassine");
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        j.setLayout(new FlowLayout());
        j.addMouseListener(new Controleur(j));
        j.setSize(500, 500);
        j.show();
    }

    private GrapheGui(String string) {
     super(string);
    }
    
}



Controleur
public class Controleur implements MouseListener{
    private SommetGui from  =null;;
    private Graphe g;
    private GrapheGui gG;
    public Controleur(Graphe g,GrapheGui gG){

        super();
        this.g=g;
        this.gG=gG;
    }
    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getSource() instanceof SommetGui){
            if(from==null)
                from=(SommetGui) e.getSource();
            else{
                SommetGui to=(SommetGui) e.getSource();
                gG.ajouterArret(new ArretGui(from.x+20,from.y+20,to.x+20,to.y+20));
            }
        }else if(e.getSource() instanceof JFrame){
            Sommet s=new Sommet();
            g.ajouterSommet(s);
            SommetGui sG=new SommetGui(e.getX(),e.getY());
            s.addObserver(sG);
            synchronized(this){
                gG.getContentPane().add(new JButton("yassine"));
            }
            gG.update(gG.getGraphics());
            
        }
    }

    public void mousePressed(MouseEvent e) {
       
    }

    public void mouseReleased(MouseEvent e) {
       
    }

    public void mouseEntered(MouseEvent e) {
       
    }

    public void mouseExited(MouseEvent e) {
       
    }


}




Yassine ABID@fsr

4 réponses

ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
9 août 2010 à 00:06
c'est bon c'est résolu
Il faut ajouter la ligne suivante après chaque ajoute d'un nouveau composant gG.getContentPane().validate();

Yassine ABID@fsr
3
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
8 août 2010 à 16:52
bon voilà le code simple qui ne considère que le problème:

public class GrapheGui extends JFrame{

    public static void main(String[] args){
        GrapheGui j=new GrapheGui("yassine");
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        j.setLayout(new FlowLayout());
        j.addMouseListener(new Controleur(j));
        j.setSize(500, 500);
        j.show();
    }

    private GrapheGui(String string) {
     super(string);
    }

public class Controleur extends MouseAdapter{
    private GrapheGui gG;
    public Controleur(GrapheGui gG){
        super();
        this.gG=gG;
    }
    @Override
    public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);
        gG.getContentPane().add(new JButton("yassine"));

    }


}

0
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
8 août 2010 à 16:52
Yassine ABID@fsr
0
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
8 août 2010 à 16:54
j'ai oublié de dire que quand je redimensionne la fenêtre je vois les boutons

Yassine ABID@fsr
0
Rejoignez-nous