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

avec Java Discussion :

Problème d'alignement dans l'IHM


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Problème d'alignement dans l'IHM
    Bonjour, j'aimerais juste savoir pourquoi l'alignement ne marche pas comme je le voudrais ?
    L'alignement ne s'est pas fait comme prévu, c'est à dire que les JTextField et les JLabel sont bien sous les boutons, mais pas à la bonne distance, ainsi que j'ai dû décaler la JList pour qu'elle soit à une hauteur plus ou moins "bien" ?

    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
    package test;
     
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import java.io.File;
     
    public class ArboIHM extends JFrame {
     
    	private JPanel panel = new JPanel();
    	private JPanel boutons = new JPanel();
    	private JButton triNom = new JButton("Arborescence triée par nom");
    	private JButton triTaille = new JButton("Arborescence triée par taille");
    	//private JButton TriDate = new JButton("Arborescence triée par date");
    	private File test = new File(".");
    	private ArboTrieeParNom a1 = new ArboTrieeParNom(test);
    	private JList laListe = new JList(a1.getListe().toArray());
    	private JLabel nomLabel = new JLabel("Nom : ");
    	private JLabel tailleLabel = new JLabel("Taille : ");
    	private JLabel dateLabel = new JLabel("Date : ");
    	private JPanel nom = new JPanel();
    	private JPanel taille = new JPanel();
    	private JPanel date = new JPanel();
    	private JTextField nomTexte = new JTextField(20);
    	private JTextField tailleTexte = new JTextField(20);
    	private JTextField dateTexte = new JTextField(20);
        private JScrollPane scrollPane = new JScrollPane(laListe);
     
    	public ArboIHM() {
    		init();
    	}
     
    	public void init(){
    		setTitle("Test");
    		pack();
    		this.setSize(800,600);
    		this.setLocationRelativeTo(null);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		setVisible(true);
    		GridBagConstraints gbc = new GridBagConstraints();
    		add(panel);
    		nom.add(nomLabel);
    		nom.add(nomTexte);
    		date.add(dateLabel);
    		date.add(dateTexte);
    		taille.add(tailleLabel);
    		taille.add(tailleTexte);
     
    		panel.setLayout(new GridBagLayout());
    	    gbc.gridx = 0;
    	    gbc.gridy = 1;
    	    panel.add(laListe, gbc);
     
     
     
     
    	    gbc.gridwidth = GridBagConstraints.REMAINDER;
    	    gbc.gridx = 3;
    	    gbc.gridy=0;
    	    panel.add(triNom, gbc);
     
    	    gbc.gridwidth = GridBagConstraints.REMAINDER;
    	    gbc.gridx = 3;
    	    gbc.gridy=1;
    	    panel.add(triTaille, gbc);
     
    	    gbc.gridx = 3;
    	    gbc.gridy = 2;
    	    panel.add(nom, gbc);
     
    	    gbc.gridx = 3;
    	    gbc.gridy = 3;
    	    panel.add(date, gbc);
     
    	    gbc.gridx = 3;
    	    gbc.gridy = 4;
    	    panel.add(taille, gbc);
     
     
    	}
     
    	public static void main(String... args) {
    		new ArboIHM();
    	}
    }

  2. #2
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 57
    Points
    57
    Par défaut
    Salut Sup3rc0c0,

    afin de te faciliter la tâche j'ai recoder rapido une partie de ce que tu as posté, car certes les GridBagConstraints sont très précis et très pro; mais ils sont également très chiant a manier surtout quand on débutent...
    C'est pourquoi je te propose une méthode alternative avec des setBounds() qui te permettent de régler tes coordonnées à 1 prêt dans un plan en 2D pour chacun des composants de ta fenêtre tu pourras ainsi customiser la Window à 100% , il n'y a donc plus qu'à imaginer !!!

    Bon courage !

    ps : voici le code ci - après:



    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
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import java.io.File;
     
    public class ArboIHM extends JFrame {
     
    	private JPanel panel = new JPanel();
    	private JPanel boutons = new JPanel();
    	private JButton triNom = new JButton("Arborescence triée par nom");
    	private JButton triTaille = new JButton("Arborescence triée par taille");
    	//private JButton TriDate = new JButton("Arborescence triée par date");
    	private File test = new File(".");
    //	private ArboTrieeParNom a1 = new ArboTrieeParNom(test);
    //	private JList laListe = new JList(a1.getListe().toArray());
    	private JList laListe = new JList();
    	private JLabel nomLabel = new JLabel("Nom : ");
    	private JLabel tailleLabel = new JLabel("Taille : ");
    	private JLabel dateLabel = new JLabel("Date : ");
    	private JPanel nom = new JPanel();
    	private JPanel taille = new JPanel();
    	private JPanel date = new JPanel();
    	private JTextField nomTexte = new JTextField(20);
    	private JTextField tailleTexte = new JTextField(20);
    	private JTextField dateTexte = new JTextField(20);
        private JScrollPane scrollPane = new JScrollPane(laListe);
        private Component [] tabComp = {laListe,triNom,triTaille, nom, date, taille};
     
        JPanel mainContainer = new JPanel(); // panel de référence de la frame
        private JLabel label= new JLabel(); // label qui contient les éléments
     
     
    	public ArboIHM() {
    		init();
    		for(int i = 0 ; i<tabComp.length;i++) {
    			label.add(tabComp[i]);
    		}
     
    	}
     
    	public void init(){
     
    		setTitle("Test");
    		pack();
    		this.setSize(800,600);
    		this.setLocationRelativeTo(null);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		setVisible(true);
     
    		this.add(label);
    		nom.add(nomLabel);
    		nom.add(nomTexte);
    		date.add(dateLabel);
    		date.add(dateTexte);
    		taille.add(tailleLabel);
    		taille.add(tailleTexte);
     
    		laListe.setBounds(260,250,200,25);
    		triNom.setBounds(260,290,200,25);
    		triTaille.setBounds(260,330,200,25);
    		nom.setBounds(200,400,300,25);
    		date.setBounds(200,450,300,25);
    		taille.setBounds(200,500,300,25);
     
    //		panel.setLayout(new GridBagLayout());
    //	    gbc.gridx = 0;
    //	    gbc.gridy = 1;
    //	    panel.add(laListe, gbc);
     
     
     
     
    //	    gbc.gridwidth = GridBagConstraints.REMAINDER;
    //	    gbc.gridx = 3;
    //	    gbc.gridy=0;
    //	    panel.add(triNom, gbc);
    // 
    //	    gbc.gridwidth = GridBagConstraints.REMAINDER;
    //	    gbc.gridx = 3;
    //	    gbc.gridy=1;
    //	    panel.add(triTaille, gbc);
    // 
    //	    gbc.gridx = 3;
    //	    gbc.gridy = 2;
    //	    panel.add(nom, gbc);
    // 
    //	    gbc.gridx = 3;
    //	    gbc.gridy = 3;
    //	    panel.add(date, gbc);
    // 
    //	    gbc.gridx = 3;
    //	    gbc.gridy = 4;
    //	    panel.add(taille, gbc);
     
     
    	}
     
    	public static void main(String... args) {
    		new ArboIHM();
    	}
    }
    ah et dernière précision la méthode setBounds() défini les coordonnées d'un composant comme suit :

    monComp.setBounds(x,y,width,height);

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si tu veux aligner des composants par rapport à d'autres plutot que de mettre tes composants en grilles souple, utilise le SpringLayout. On a plus de controle sur la position.

    La position absolue proposée par luffy est à éviter comme la peste. Ta fenêtre ne fontionnera pas proprement lors du redimensionnement, tu va avoir des emmerdes avec tous les utilisateurs ayant des polices ou des DPI différents de ton poste développeur ou d'une version à l'autre de java.

  4. #4
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si tu veux aligner des composants par rapport à d'autres plutot que de mettre tes composants en grilles souple, utilise le SpringLayout. On a plus de controle sur la position.

    La position absolue proposée par luffy est à éviter comme la peste. Ta fenêtre ne fontionnera pas proprement lors du redimensionnement, tu va avoir des emmerdes avec tous les utilisateurs ayant des polices ou des DPI différents de ton poste développeur ou d'une version à l'autre de java.
    Décidement tchize_ tu me suis comme la peste pour reprendre tes propres mots ! Ma solution nécessite effectivement de désactiver le redimensionnement, mais au risque de me tromper il n'a pas préciser qu'il voulait faire de la redim' , si ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Justement, tu dois pouvoir redimenssioner pour t'adapter à la taille de tes composants, qui changeront en fonction de l'environnement, l'absence de layout c'est amener des tas d'emmerdes dans swing et créer des applications non portables.

  6. #6
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Justement, tu dois pouvoir redimenssioner pour t'adapter à la taille de tes composants, qui changeront en fonction de l'environnement, l'absence de layout c'est amener des tas d'emmerdes dans swing et créer des applications non portables.
    Je suis parfaitement d'accord , mais étant donné qu'on était dans la partie " débutant " je proposais une solution de débutant justement en ne me posant pas tout ces problèmes essentiels d'interopérabilité... Sachant qu'en plus on n'a pas le contexte du projet, ca peut-être très bien un projet scolaire de base sans redimension ni portabilité finale, non ?

Discussions similaires

  1. Problème d'alignement dans un tableau
    Par JolyLoic dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 15/10/2009, 12h05
  2. Problème d'alignement des colonnes dans un block
    Par zinabd dans le forum Designer
    Réponses: 1
    Dernier message: 03/12/2008, 15h28
  3. Problème d'alignement dans un td
    Par dream_of_australia dans le forum Intégration
    Réponses: 2
    Dernier message: 22/06/2007, 11h21
  4. Problème d'alignement dans formulaire en css
    Par hartecel dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 07/03/2007, 20h11
  5. Problème alignement dans cellule sous IE
    Par mauriceuh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/02/2007, 14h08

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