IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

position des composants


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut position des composants
    Bonjour, encore une tite question.
    En général, lorsqu'on veut placer des composants dans son parent, on utilise un layout. Mais pour le coup, je vois pas trop comment faire.
    Imaginez un jeu de dame par exemple:
    Un composant représente le damier
    D'autres composants représentent les pions.

    Je ne pense pas qu'un gridbaglayout permette de représenter la disposition initiale des pions dans le damier, puisque par définition, avec un gridbaglayout, la somme des poids des composants selon X et Y représente tout l'espace disponible, et donc, les composants vont remplir tout l'espace disponible.
    J'espère que je suis clair.
    Donc, dans cet exemple du jeu de dame, même si l'on utilise un gridbaglayout de 10x10 et que l'on ne remplit que les lignes 1,2,3 et 8,9,10, ces 6 lignes vont prendre l'ensemble de la place disponible (autrement dit les lignes 4 à 7 auront une hauteur de 0).

    Savez vous comment régler ce problème?
    (la seule solution que je vois pour le moment c'est de remplir ces cases vides avec des composants qui ne s'affichent pas, donc des composants dont on implémente pas paint(), mais je crains que ce soit un peu lourd ).

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour ce genre de jeux(et tous en général) mieux vaut tout directement dessiner à la main...

    Tu étends un JPanel, tu surcharge la méthode paintComponent et tu dessine dans le code de cette méthode (à soivoir que c'est comme celà que sont réalisé les composants Swing, aveuc deux ou trois niveaux de complexion supplémentaire bien sûr).

    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut re
    Ah, ok, j'aurais vraiment pas cru, parceque j'avais essayé comme ca à une époque et j'avais trouvé ca super galère.
    En particulier lorsque tu veux déplacer tes pièces avec un MouseMotion.
    En fait j'avais atteint de bons résultats, mais j'avais le problème suivant (de mémoire) du au fait que paint est threadée je pense:
    Pour éviter un scintillement lorsque la scène est repeinte avec des intervalles très courts (petites barres horyzontales qui apparaissent), j'avais tenté de repeindre uniquement ce qui était nécessaire. Donc en déplacant la pièce, je disais, affiche l'arrière plan à l'ancienne position du curseur, affiche la pièce à la position actuelle du curseur. Mais en déplacant les pièces rapidement, rien a faire, j'avais toujours une trace de ma pièce qui aparaissait.

    Bon, c'est peut être pas très clair ce que je dis. De toute façon je vais réessayer, si j'ai toujours ce problème je vous tient au courant.

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Moi j'aurais procédé de façon différente.

    J'aurais utilisé le système de ZOrder, ou un JLayeredPane, avec lesquels j'aurais utilisé deux JPanels superposés. Celui du fond aurait été l'échiquier, celui du dessus celui où se déplace les pièces.

    Pour celui de l'échiquier, le GridLayout me semble bien indiqué ; il n'y a pas tant de cases que cela, et cela facilite la vie pour les repérages. Nous aurions parlé d'un jeu de Go, avec ses 19x19 intersections, que cela aurait été peut être plus tendu.

    Pour celui des pièces, un layout null me semble justifié, et j'aurais positionné les pièces en me repérant simplement sur la position des cases.

    Mes 2 centimes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut re
    Merci pour ta réponse.

    Juste histoire de discuter un peu:
    Quel intéret d'utiliser un layout pour les cases? En l'occurence l'échiquier est plutot simple a dessiner et à redimensionner, et peut donc être un objet à part entière, non?
    En fait, moi, si je voulais utiliser un gridBagLayout, c'était uniquement pour les pièces, et c'était dans l'idée de faire du dragg d'un composant pièce lors du mouvement d'une pièce. Histoire d'éviter de tout implémenter avec paintComponent.
    Par contre, j'aime bien l'idée des deux JPanel (je me pose quand même une question quand aux déplacement des pièces: quand le background est transparent, et que tu repains un rond à deux endroits différents, seul le dernier apparait? si oui c'est clair que c'est parfait, sinon c'est pas très utile je pense).
    Je vais faire quelques tests pour voir.

    Finalement, pour le moment, je fais tout avec le paintComponent
    Mais j'ai remarqué quelque chose d'un peu bizarre, c'est que ca marche parfaitement...
    Même si je repaint tout à chaque instant du déplacement d'une pièce:
    1) L'échiquier
    2) Les pièces
    3) La pièce en déplacement
    Je n'ai plus le problème que j'avais il y a de ca 2 ans, à savoir un petit scintillement de l'échiquier qui était repaint trop souvent.
    Pourtant j'utilisais déjà le double buffering à cette époque.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut
    Bon, j'ai fait le test.
    Si on trace 2 ronds sur un JPanel dont on n'a pas défini le background, la trace des pièces reste visible, donc je vois pas trop comment faire pour utiliser 2 JPanel. Il faudrait pouvoir dire, repeinds moi un fond transparent avant de me repeindre les pièces. Je pense voir comment faire, mais bon, je pense que ca devient plus gourmand en ressources que de tout implémenter avec un simple paint.

    (Je me doute que c'est pas très clair ce que je raconte, mais pour ceux qui arrivent à comprendre, votre avis svp?)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut dernière remarque
    Bon, finalement je m'en sort avec 2 JPanel, mais le scintillement réapparait dans ce cas là. Je vais donc tout implémenter avec le paint d'un seul JPanel, sauf correction de votre part.

    Voici le code que j'utilise pour tester les 2 JPanel
    *)Test1 dessine un rond là ou se trouve la souris lors d'un mouseDragged.
    *)Test2 est juste un rectangle qui prend toute la place du composant.
    J'ai du faire de Test2 un MouseMotionListener de test1 pour qu'il se repeigne aussi lorsque le rond de test1 est repeint.
    *)Test3 est une JFrame qui s'ajoute les 2 JPanel Test1 et Test2 et dit que le rond doit être peint après le rectangle avec setComponentZOrder (je ne sais pas si ca marche vraiment comme ca dans la mesure ou les repaint sont apelés par les MouseDragged, ie je ne sais pas si c'est vraiment setComponentZOrder qui observe les requêtes de paint et les ordonne comme je le souhaite, en tout cas la pièce est bel et bien dessinée après le rectangle)

    Merci d'avance si vous pouvez m'en dire un peu plus sur ce code, et comment l'améliorer pour éviter le scintillement (jdk1.6).

    (si vous voulez tester exécutez Test3 et faites un 'mouseDragged' sur la JFrame):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    package tst;
     
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Test3 extends JFrame{
     
        public Test3(){
            JPanel piece= new Test();
            JPanel echiquier= new Test2();
            piece.addMouseMotionListener((MouseMotionListener)echiquier);
            this.add(piece); this.add(echiquier);
            this.setComponentZOrder(piece, 0);
            this.setComponentZOrder(echiquier, 1);
            this.setSize(800, 600);
            this.setVisible(true);
        }
     
        public static void main(String[] args){
            new Test3();
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    package tst;
     
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JPanel;
     
     
    public class Test extends JPanel implements MouseMotionListener{
        private int xP= 0, yP= 0;
     
        public Test() {
            this.setSize(800, 600);
            this.addMouseMotionListener(this);
        }
     
        public void paint(Graphics g){
            Graphics2D g2d= (Graphics2D) g;
            //g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0 ));
            g2d.setColor(Color.BLACK);
            g2d.fillOval(this.xP, this.yP, 20, 20);
        }
     
        @Override
        public void mouseDragged(MouseEvent e) {
            this.xP= e.getX();
            this.yP= e.getY();
            this.repaint();        
        }
        @Override
        public void mouseMoved(MouseEvent arg0) {} 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    package tst;
     
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JPanel;
     
     
    public class Test2 extends JPanel implements MouseMotionListener{
        private int xP= 0, yP= 0;
     
        public Test2() {
            this.setSize(800, 600);
        }
     
        public void paint(Graphics g){
            g.setColor(Color.GREEN);
            g.fillRect(0, 0, this.getWidth(), this.getHeight());
        }    
     
     
        @Override
        public void mouseDragged(MouseEvent e) {
            this.repaint();        
        }
        @Override
        public void mouseMoved(MouseEvent arg0) {}
    }

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Je ne vois aps trop comment tu fais pour avoir ces trainées...

    Car de la façon suivante je n'en ais pas la moindre:


    Un Wrapper autour d'une Ellipse2D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Paint;
    import java.awt.Point;
    import java.awt.Shape;
    import java.awt.geom.Ellipse2D;
    import java.awt.geom.Point2D;
     
     
    public class MyCircle {
        private Ellipse2D shape;
        private Point position;
        private Paint paint;
        private double radius;
     
     
     
     
     
     
        public MyCircle( Point position, Paint paint,
                double radius) {
            super();
            this.position = position;
            this.paint = paint;
            this.radius = radius;
            this.shape = new Ellipse2D.Double(0,0,radius*2,radius*2);
        }
     
     
     
     
     
     
        public Ellipse2D getShape() {
            return shape;
        }
     
     
     
     
     
     
        public void setShape(Ellipse2D shape) {
            this.shape = shape;
        }
     
     
     
     
     
     
        public Point getPosition() {
            return position;
        }
     
     
     
     
     
     
        public void setPosition(Point position) {
            this.position = position;
        }
     
     
     
     
     
     
        public Paint getPaint() {
            return paint;
        }
     
     
     
     
     
     
        public void setPaint(Paint paint) {
            this.paint = paint;
        }
     
     
     
     
     
     
        public double getRadius() {
            return radius;
        }
     
     
     
     
     
     
        public void setRadius(double radius) {
            this.radius = radius;
        }
     
     
     
        public boolean contains(Point p) {
            return shape.contains(p.x-position.x, p.y-position.y);
        }
     
     
        public void draw(Graphics2D g) {
            Paint previousPaint = g.getPaint();
     
            g.translate(position.getX(), position.getY());
            g.setPaint(paint);
            g.fill(shape);
     
            //On rétablit le contexte précédent des graphics
            g.translate(-position.getX(), -position.getY());
            g.setPaint(previousPaint);
        }
    }
    La classe réalisant le dessin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.RenderingHints;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.awt.geom.Rectangle2D;
    import java.awt.geom.Ellipse2D.Double;
    import java.util.ArrayList;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class PanelWithCircles extends JPanel implements MouseListener, MouseMotionListener{
     
        private ArrayList<MyCircle> shapes;
     
     
        private MyCircle selectedCircle;
        private Point mousePos;
        int dx;
        int dy;
     
        public PanelWithCircles() {
            shapes = new ArrayList<MyCircle>();
            this.addMouseListener(this);
            this.addMouseMotionListener(this);
        }
     
        @Override
        public void mouseClicked(MouseEvent e) {
            // TODO Auto-generated method stub
     
        }
     
     
     
        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
     
        }
     
     
     
        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
     
        }
     
     
     
        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
     
            Point p = e.getPoint();
            for(MyCircle circle : shapes) {
                if(circle.contains(p)) {
                    selectedCircle = circle;
                    break;
                }
            }
            if(selectedCircle != null) {
                System.out.println(selectedCircle.getPosition().x);
                dx = (selectedCircle.getPosition().x-e.getX());
                dy = (selectedCircle.getPosition().y-e.getY());
            }
        }
     
     
     
        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            selectedCircle = null;
        }
     
     
     
     
     
        @Override
        public void mouseDragged(MouseEvent e) {
            System.out.println("drag");
            if(selectedCircle != null) {
     
                selectedCircle.setPosition(new Point(e.getX()+dx, e.getY()+dy));
                repaint();
     
            }
     
        }
     
     
     
        @Override
        protected void paintComponent(Graphics arg0) {
            // TODO Auto-generated method stub
            super.paintComponent(arg0);
            if(isShowing()) {
                Graphics2D g2d = (Graphics2D) arg0;
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                //On affiche le damier
                int caseWith = Math.min(getWidth(), getHeight())/10;
                for(int i = 0; i<10;i++ ) {
                    for(int j = 0; j<10;j++ ) {
                        if((i+j)%2 == 1) {
                            g2d.setPaint(Color.black);
     
                        } else {
                            g2d.setPaint(Color.white);
                        }
                        g2d.fill(new Rectangle2D.Double(i*caseWith,j*caseWith,(i+1)*caseWith, (j+1)*caseWith));
                    }
                }
     
     
                //ON affiche les pions
                for(MyCircle circle : shapes) {
                    circle.draw(g2d);
                }
            }        
        }
     
     
     
        @Override
        public void mouseMoved(MouseEvent e) {
            // TODO Auto-generated method stub
     
        }
     
     
        public void addCircle(MyCircle c) {
            shapes.add(c);
        }
     
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            PanelWithCircles p = new PanelWithCircles();
            p.addCircle(new MyCircle(new Point(10,10),Color.blue, 20));
            p.addCircle(new MyCircle(new Point(50,10),Color.red, 20));
            p.addCircle(new MyCircle(new Point(50,50),Color.green, 20));
            p.addCircle(new MyCircle(new Point(10,50),Color.yellow, 20));
     
     
            JFrame f = new JFrame();
            f.setSize(400,300);
            f.add(p);
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setVisible(true);
        }
     
    }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut re
    ok.

    Peux tu m'en dire plus sur les objets Paint et Shape que je ne connais pas (surtout Paint, et en particulier si tu pouvais me décrire ta méthode draw ce serait nickel)? J'ai l'impression que Shape sert surtout à garder un code bien orienté objet, je me trompe?
    Je remarque que tu repeinds tout à chaque fois, as tu déjà essayé de repeindre uniquement le nécessaire? (redessiner le fond uniquement là ou se trouvait la pièce à l'ancienne position (en prenant un morceau d'image par exemple) et redessiner uniquement la nouvelle position)

    De mon coté, j'avais fait une erreur bien stupide, comme à chaque fois que je veux écrire un code en moins de 3 minutes . Je l'ai arrangé et maintenant je n'ai plus de prob avec 2 JPanel (remarque, je rapelle que je n'ai pas de prob avec une méthode Paint qui fait tout dans un seul JPanel mais je cherche à faire quelque chose de propre).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    package tst;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
     
     
    import javax.swing.JPanel;
     
     
    public class Test extends JPanel{
        private int xP= 0, yP= 0;
     
        public Test() {
            this.setSize(800, 600);
        }
     
        public void paint(Graphics g){
            Graphics2D g2d= (Graphics2D) g;
            g2d.setColor(Color.BLACK);
            g2d.fillOval(this.xP, this.yP, 20, 20);
        }
     
        public void setXY(int x, int y){
            this.xP= x; this.yP= y;
        } 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    package tst;
     
    import java.awt.Color;
    import java.awt.Graphics;
     
     
    import javax.swing.JPanel;
     
     
    public class Test2 extends JPanel{
     
        public Test2() {
            this.setSize(800, 600);
        }
     
        public void paint(Graphics g){
            g.setColor(Color.GREEN);
            g.fillRect(0, 0, this.getWidth(), this.getHeight());
        }    
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Test3 extends JFrame implements MouseMotionListener{
        private Test piece;
     
        public Test3(){
            this.piece= new Test();
            JPanel echiquier= new Test2();
            piece.addMouseMotionListener(this);
            this.add(piece); this.add(echiquier);
            this.setComponentZOrder(piece, 0);
            this.setComponentZOrder(echiquier, 1);
            this.setSize(800, 600);
            this.setVisible(true);
        }
     
        @Override
        public void mouseDragged(MouseEvent e) {
            this.piece.setXY(e.getX(), e.getY());
            this.repaint();
        }
     
        @Override
        public void mouseMoved(MouseEvent e) {}
     
        public static void main(String[] args){
            new Test3();
        }
    }
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/09/2012, 17h09
  2. Position des composants
    Par Panaméen dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/06/2009, 11h58
  3. gerer la position des composants dans une fenetre
    Par AbouraStat dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/05/2009, 11h37
  4. Position des composants sur une frame avec layout null
    Par bellemlih dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/12/2007, 22h13
  5. Position des composants avec Visual Editor
    Par Houssem dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/04/2007, 03h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo