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 :

la mise en forme des composant d'une fenetre


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 26
    Par défaut la mise en forme des composant d'une fenetre
    bonjour,
    je suis bloqué depuis une semaine. je voudrai realiser une fenetre contenant des champs, des boutons, une zone de texte avec ascenceur. j'ai donc opté pour l'utilisation de la methode setBounds pour la disposition des composants. malheureusement aucun composant ne s'affiche à l'interieur de la fenetre quand j'execute le programme. et quand je met en commentaire les lignes setLayout(null), les composants aparaissent mais sont tous alignés au lieu d'etre sous forme de grille, en plus ni la zone de texte ni meme l'ascenceur n'apparait.
    voici mon code:

    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
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
     
    public class InterGraf extends JFrame {
     
        InterGraf(){
            this.setTitle("User Platform");
            this.setSize(350,500);
            Container contenu = this.getContentPane();
            JPanel panHaut = new JPanel();panHaut.setLayout(null);
            JPanel panBas = new JPanel();panBas.setLayout(null);
            JPanel panCentre = new JPanel();panCentre.setLayout(null);
            contenu.add(panHaut,BorderLayout.NORTH);
            contenu.add(panCentre,BorderLayout.CENTER);
            contenu.add(panBas,BorderLayout.SOUTH);
            JLabel l1 = new JLabel("Prenom"); l1.setBounds(0,20,10,50);
            JLabel l2 = new JLabel("Nom"); l2.setBounds(0,30,10,50);
            JLabel l3 = new JLabel("Solde"); l3.setBounds(0,40,10,50);
            JLabel l4 = new JLabel("Decouvert"); l4.setBounds(0,50,20,20);
            JLabel l5 = new JLabel("Numero Compte"); l5.setBounds(0,60,20,20);
            JTextField t1 = new JTextField(""); t1.setBounds(30,20,10,100);
            JTextField t2 = new JTextField(""); t2.setBounds(30,30,10,100);
            JTextField t3 = new JTextField(""); t1.setBounds(30,40,10,100);
            JTextField t4 = new JTextField(""); t1.setBounds(30,50,10,100);
            JTextField t5 = new JTextField(""); t1.setBounds(30,60,10,100);
            panHaut.add(l1); panHaut.add(t1);
            panHaut.add(l2); panHaut.add(t2);
            panHaut.add(l3); panHaut.add(t3);
            panHaut.add(l4); panHaut.add(t4);
            panHaut.add(l5); panHaut.add(t5);
            JButton b1 = new JButton("Creer compte"); b1.setBounds(new Rectangle(10,80,10,50));
            JButton b2 = new JButton("Historique du compte");b2.setBounds(new Rectangle(27,80,10,80));
            panHaut.add(b1); panHaut.add(b2);
            panHaut.setBorder(new TitledBorder("Ouverture de Compte Personnel"));
            JTextArea zone = new JTextArea(""); zone.setBounds(0,90,230,470);
            JScrollPane asc = new JScrollPane(zone);
            panCentre.add(asc);
            Border b = BorderFactory.createLineBorder (Color.blue .darker ( ) ,5);
            panCentre.setBorder(b);
            JLabel lb1 = new JLabel("Numero Compte"); lb1.setBounds(0,250,10,50);
            JLabel lb2 = new JLabel("Montant Retrait"); lb2.setBounds(0,260,10,50);
            JLabel lb3 = new JLabel("Montant Depot"); lb3.setBounds(0,270,10,50);
            JTextField tb1 = new JTextField(""); tb1.setBounds(30,250,10,100);
            JTextField tb2 = new JTextField(""); tb2.setBounds(30,260,10,100);
            JTextField tb3 = new JTextField(""); tb1.setBounds(30,270,10,100);
            panBas.add(lb1); panBas.add(tb1);
            panBas.add(lb2); panBas.add(tb2);
            panBas.add(lb3); panBas.add(tb3);
            JButton bb1 = new JButton("Depot"); bb1.setBounds(20,290,12,30);
            JButton bb2 = new JButton("Retrait");bb2.setBounds(30,290,12,30);
            panBas.add(bb1); panBas.add(bb2);
            panHaut.setBorder(new TitledBorder("Transaction sur le Solde"));
     
        }
        public static void main(String[] args) {
            new InterGraf().setVisible(true);
     
        }
     
    }
    quelqu'un a une idée de comment je peux modifier ce code afin que les composants s'affiche dans la fenetre comme je le veux ?

    merci d'avance à toute contribution

  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
    En utilisant un Layout digne de ce nom et pas du NullLayout qui ne vaut pas grand chose (elle va avoir une jolie tête ton appli quand les utilisateurs vont redimensionner la fenêtre ^^.

    Tout ce que tu peux réaliser en NullLayout tu pourrs l'obtenir en utilisant un GridBagLayout ou deu GroupLayout (cf Matisse, l'éditeur graphique d'applications Swing de Netbeans).

    ++

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 26
    Par défaut
    je suis d'accord pour essayer avec le GridLayout, mais pour ce qui de l'ascenceur avec la zone de texte, pourquoi l'ascenceur ne s'afiche pas ?
    meme en utilisant le GridLayout

  4. #4
    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
    Ton champ texte se trouve bien dans un JScrollPane.
    Celà vient du fait que l'ascenseur ne s'affiche que s'il est nécessaire normalement (s'il y a du texte qui dépasse de l'espace disponible pour le champ texte).

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 26
    Par défaut
    ouai t'as raison l'ascenceur aparait automatiquement. merci beaucoup
    maintenant comment puis je faire pour changer la police de l'objet TitledBorder ?

    merci encore

  6. #6
    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
    C'est le genre de questions dont la réponse se trouve en deux deux dans la javadoc.
    Help yourself
    http://java.sun.com/javase/6/docs/ap...ledBorder.html

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2007, 09h19
  2. Mise en forme des cellules d'une flexgrid
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 30/08/2006, 10h57
  3. Forcer la mise en forme des champs d'une TABLE
    Par dunbar dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/08/2006, 01h07
  4. Réponses: 2
    Dernier message: 11/07/2006, 17h08
  5. Réponses: 6
    Dernier message: 16/06/2006, 14h20

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