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

Interfaces Graphiques en Java Discussion :

taille des JTextField


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 27
    Points : 23
    Points
    23
    Par défaut taille des JTextField
    Bonjour à tous,
    je tente de créer in interface graphique pour une future application qui me servira à interagir avec une base de données. J'ai lu sur le sujet des interfaces graphiques mais je dois mal comprendre le concept des dimensions des éléments que je position dans la fenêtre. J'ai beau changer le 5 qui devrait gérer la hauteur des JTextField mais rien ne change. J'aimerais comprendre le point que je dois avoir oublié ou que je n'utilise pas correctement. Merci pour l'aide.

    Main
    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
    import mathieu.frame.*;
     
    import javax.swing.SwingUtilities;
     
     
    public class Main {
     
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run(){
    				//new FenetrePrincipal();
    				new FenetreClient();
    			}
    		});
     
    	}
     
    }
    Frame
    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
    package mathieu.frame;
     
    import javax.swing.JFrame;
     
    public class Frame extends JFrame{
     
    	public Frame(String title,int width, int height ) {
    		setTitle(title);
    		setSize(width,height);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setResizable(false);
    		setLocationRelativeTo(null);
    		setVisible(true);
    		//add(new Panel());
    	}
     
    }
    Panel
    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
    package mathieu.frame;
     
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    public class Panel extends JPanel{
     
    	public void paintComponent(Graphics g){
    		Font font = new Font("Arial", Font.BOLD,40);
    		g.setFont(font);
    		g.setColor(Color.BLACK);
    	}
     
    }
    FenetreClient
    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
    package mathieu.frame;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
     
    import javax.swing.BoxLayout;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    public class FenetreClient {
     
    	JLabel l1;//nom
    	JLabel l2;//prenom
    	JLabel l3;//date d'adhesion
    	JLabel l4;//date fin abonnement
    	JLabel l5;//date renouvellement
    	JLabel l6;//plan
     
    	JTextField jtf1;//nom
    	JTextField jtf2;//prenom
    	JTextField jtf3;//date d'adhesion
    	JTextField jtf4;//date fin abonnement
    	JTextField jtf5;//date renouvellement
    	JTextField jtf6;//plan
     
    	Panel panel;
    	Panel p1;
    	Panel p2;
    	Panel p3;
    	Panel p4;
    	Panel p5;
     
    	public FenetreClient(){
    		Frame frame = new Frame("Fenêtre client",500 ,300);
    		frame.setBackground(Color.WHITE);
     
    		panel = new Panel();
    		p1 = new Panel();
    		p2 = new Panel();
    		p3 = new Panel();
    		p4 = new Panel();
    		p5 = new Panel();
     
    		l1 = new JLabel("Nom");
    		l2 = new JLabel("Prénom");
    		l3 = new JLabel("Date d'adhésion");
    		l4 = new JLabel("Date de fin d'abonnement");
    		l5 = new JLabel("Date de renouvellement");
    		l6 = new JLabel("Plan");
     
    		jtf1 = new JTextField();
    		jtf2 = new JTextField();
    		jtf3 = new JTextField();
    		jtf4 = new JTextField();
    		jtf5 = new JTextField();
    		jtf6 = new JTextField();
     
    		Font police = new Font("Arial", Font.BOLD, 14);
    		jtf1.setFont(police);
    		jtf1.setPreferredSize(new Dimension(150, 5));
    		jtf1.setForeground(Color.GRAY);
     
    		jtf2.setFont(police);
    		jtf2.setPreferredSize(new Dimension(150, 5));
    		jtf2.setForeground(Color.GRAY);
     
    		jtf3.setFont(police);
    		jtf3.setPreferredSize(new Dimension(150, 5));
    		jtf3.setForeground(Color.GRAY);
     
    		jtf4.setFont(police);
    		jtf4.setPreferredSize(new Dimension(150, 5));
    		jtf4.setForeground(Color.GRAY);
     
    		jtf5.setFont(police);
    		//jtf5.setPreferredSize(new Dimension(150, 5));
    		jtf5.setSize(150, 2);
    		jtf5.setForeground(Color.GRAY);
     
    		jtf6.setFont(police);
    		//jtf6.setPreferredSize(new Dimension(150, 5));
    		jtf6.setSize(150, 2);
    		jtf6.setForeground(Color.GRAY);
     
    		frame.add(panel);
     
    		p1.setSize(500, 10);
    		p1.setLayout(new BoxLayout(p1, BoxLayout.LINE_AXIS));
    		p1.add(l1);
    		p1.add(jtf1);
    		p1.add(l2);
    		p1.add(jtf2);
     
    		p2.setSize(500, 10);
    		p2.setLayout(new BoxLayout(p2, BoxLayout.LINE_AXIS));
    		p2.add(l3);
    		p2.add(jtf3);
     
    		p3.setSize(500, 10);
    		p3.setLayout(new BoxLayout(p3, BoxLayout.LINE_AXIS));
    		p3.add(l4);
    		p3.add(jtf4);
     
    		p4.setSize(500, 10);
    		p4.setLayout(new BoxLayout(p4, BoxLayout.LINE_AXIS));
    		p4.add(l5);
    		p4.add(jtf5);
     
    		p5.setSize(500, 10);
    		p5.setLayout(new BoxLayout(p5, BoxLayout.LINE_AXIS));
    		p5.add(l6);
    		p5.add(jtf6);
     
    		panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    		panel.add(p1);
    		panel.add(p2);
    		panel.add(p3);
    		panel.add(p4);
    		panel.add(p5);
     
    	}
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La taille d'un composant est calculée dynamiquement en fonction de différents paramètres (taille maximum, taille minimum, taille préférentielle) selon les règles du Layout Manager utilisé (certains utiliseront la taille préférentielle par exemple, d'autres pas, certains prendront en compte la taille du contenant, d'autres la taille du contenu, etc).

    Pour les composants affichant du texte, la taille de la police prime. Une hauteur de 5 pixels pour une police de 14 points ne sera pas appliquée, parce qu'inférieure. Appeler setSize() est inutile : avec un Layout Manager, c'est ce dernier qui va appeler setSize() pour appliquer la taille qu'il a calculée pour le composant, remplaçant donc toute valeur que tu auras mises, à la validation de l'UI. D'ailleurs, pour déboguer, tu peux afficher getSize() en console pour voir la taille du composant (après validation, donc, par exemple, après l'appel de setVisible(true) sur la JFrame).

    Par ailleurs, la rédéfinition de paintComponent ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Panel extends JPanel{
     
    	public void paintComponent(Graphics g){
    		Font font = new Font("Arial", Font.BOLD,40);
    		g.setFont(font);
    		g.setColor(Color.BLACK);
    	}
     
    }
    1. est totalement inutile : La police et la couleur ne sont pas utilisées, donc inutile de les affecter.
    2. va provoquer des dysfonctionnements graphiques, parce que le traitement standard du fond du panel est supprimé (appel de super.paintComponent(g)), parce que le contexte graphique est recyclé : ce qui est dessiné dedans pour un autre composant va rester affiché dans le fond
    3. la méthode est censée être protected... ne pas la rendre public inutilement.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [Connectique] taille des cables
    Par bannik dans le forum Composants
    Réponses: 2
    Dernier message: 25/11/2003, 18h09
  2. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34
  3. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38
  4. Taille des surfaces avec DirectDraw
    Par Shakram dans le forum DirectX
    Réponses: 5
    Dernier message: 09/09/2002, 00h42
  5. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48

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