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

 Java Discussion :

Marge entre Fenetre et JPanel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Marge entre Fenetre et JPanel
    Bonjour

    je voudrais que entre la fenetre JFrame et un container principal JPanel existe une marge , de façon que lorsque je trace la bordure du JPanel, on voit bien la différence avec le bord de la fenêtre

    merci si quelqu'un pouvait m'éclairer

    voici le bout de code concerné :
    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
     
    import javax.swing.BorderFactory;
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Fenetre extends JFrame {
     
    	// Conteneurs
    	private  JPanel  cont1 	       =  new JPanel( ) ;
    	private  JPanel  cont1Label 		=  new JPanel( ) ;
    	private  JPanel  cont1Bouton	= new JPanel ( ) ;
    	private  JPanel  cont1BtnOper 	=  new JPanel ( ) ;
    	private  JPanel  cont1BtnChiffre   =  new JPanel ( ) ;
    	//Layout
    	private Box layoutBoxHbtn ; // layout pour cont1Bouton
    	//Nbre de Boutons Chiffre de 0 à 9 inclus
    	private static int nbreBtn = 10 ;
    	// Stockage de ces 10 boutons
    	private JButton[ ] tblBtn = new JButton[ nbreBtn ] ;
    	// Label pour affichage
    	private JLabel labelAff = new JLabel ( ) ;
     
     
    	public Fenetre ( )  {
     
    		// la fenêtre
    		this.setTitle( "Calculette Java" ) ;
    		this.setSize ( 300, 300 ) ;
    		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) ;
    		this.setLocationRelativeTo( rootPane ) ;
     
    		this.setLayout( new FlowLayout( FlowLayout.CENTER) ) ;
     
    		// détermination
    		cont1.setPreferredSize( new Dimension ( 250 , 250 )  ) ;
    		cont1Label.setPreferredSize ( new Dimension ( 200, 50 ) ) ;
    		cont1BtnChiffre.setPreferredSize( new Dimension ( 150 , 150) );
    		labelAff.setPreferredSize ( new Dimension ( 180, 50 ) ) ;
    		// le conteneur principal
    		cont1.setBackground( Color.orange ) ;
    		// couleur uniquement pour voir l'espace du conteneur 
    		cont1.setBorder(BorderFactory.createLineBorder(Color.blue));
    		cont1.setLayout( new BorderLayout ( 50 , 30 ) ) ; // espacement de 30 en Hauteur entre les composants de ce cont
    		cont1.add(cont1Label, BorderLayout.NORTH ) ;
    		cont1.add(cont1Bouton, BorderLayout.CENTER ) ;
     
    		// Le cont Label
    		// couleur uniquement pour voir l'espace du conteneur 
    		cont1Label.setBackground( Color.lightGray) ;
    		cont1Label.setBorder(BorderFactory.createLineBorder(Color.black));
    		cont1Label.setLayout( new FlowLayout ( FlowLayout.CENTER) ) ;
     
    		labelAff.setHorizontalAlignment( JLabel.RIGHT) ;
    		labelAff.setText( "Bonjour " );
    		cont1Label.add( labelAff );
     
    		// Le cont Bouton
    		layoutBoxHbtn = Box.createHorizontalBox();
    		cont1Bouton.add(layoutBoxHbtn);       // on y ajoute le BoxLayout
    		cont1Bouton.setBackground( Color.green ) ;
    		layoutBoxHbtn.add(cont1BtnChiffre);  // Puis chaque conteneur de bouton
    		layoutBoxHbtn.add(cont1BtnOper);
     
    		// le cont pour les boutons chiffres
    		cont1BtnChiffre.setLayout( new GridLayout ( 4 , 3 , 4 , 4 ) ) ; // lignes, Colonnes, espacesH , espaceV
    		// couleur uniquement pour voir l'espace du conteneur 
    		cont1BtnChiffre.setBackground( Color.blue ) ;
    		// ajout des boutons au conteneur
    		for ( int  i = nbreBtn-1 ; i >= 0 ;  i -- )  {
    			tblBtn[ i ] = new JButton ( " " +  i  ) ;
    			cont1BtnChiffre.add( tblBtn[i] ) ;
    		}// de for
     
    		this.setContentPane( cont1 ) ;
    		this.setVisible( true ) ;
     
    	}// de constructeur
     
    }// de class Fenetre

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai changé le code comme cela mais rien ne change !
    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
     
    import javax.swing.BorderFactory;
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Fenetre extends JFrame {
     
    	// Conteneurs
    	private  JPanel  cont1 		=  new JPanel( ) ;
    	private  JPanel  cont1Label 		=  new JPanel( ) ;
    	private  JPanel  cont1BtnOper 	=  new JPanel ( ) ;
    	private  JPanel  cont1BtnChiffre   =  new JPanel ( ) ;
    	//Nbre de Boutons Chiffre de 0 à 9 inclus + ( , et = ) soit 12
    	private static int nbreBtn = 12 ;
    	// Stockage de ces 10 boutons
    	private JButton[ ] tblBtn = new JButton[ nbreBtn ] ;
    	// Label pour affichage
    	private JLabel labelAff = new JLabel ( ) ;
     
     
    	public Fenetre ( )  {
     
    		// la fenêtre
    		this.setTitle( "Calculette Java" ) ;
    		this.setSize ( 300, 300 ) ;
    		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) ;
    		this.setLocationRelativeTo( rootPane ) ;
    		// pour les tests
    		this.setBackground( Color.black) ;
     
    		// détermination
    		cont1.setPreferredSize( new Dimension ( 250 ,250 ) ) ;
    		cont1BtnChiffre.setPreferredSize( new Dimension ( 180 , 180) );
    		cont1BtnOper.setPreferredSize( new Dimension ( 70 , 180) );
    		cont1Label.setPreferredSize ( new Dimension ( 150,50 ) ) ;
    		labelAff.setPreferredSize ( new Dimension ( 140,40 ) ) ;
     
    		// le conteneur principal	
    		cont1.setBackground( Color.orange ) ;
    		cont1.setBorder(BorderFactory.createLineBorder(Color.blue));
     
    		// Le cont Label
    		cont1Label.setBackground( Color.lightGray) ;
    		cont1Label.setBorder(BorderFactory.createLineBorder(Color.white));
    		cont1Label.add( labelAff );
     
    		// le LabelAff
    		labelAff.setHorizontalAlignment( JLabel.RIGHT) ;
    		labelAff.setText( "Bonjour " );
     
    		// le cont pour les boutons chiffres
    		cont1BtnChiffre.setBorder(BorderFactory.createLineBorder(Color.magenta));
    		cont1BtnChiffre.setLayout( new GridLayout ( 4 , 3 , 4 , 4 ) ) ; // lignes, Colonnes, espacesH , espaceV
    		cont1BtnChiffre.setBackground( Color.blue ) ;
    		for ( int  i = nbreBtn - 1   ;  i >= 0 ;  i--  )  {
    				if ( i == 11 )  			tblBtn[ i ] = new JButton ( " ,"  ) ;	
    			else  if ( i == 10 )  			tblBtn[ i ] = new JButton ( " ="  ) ;
    				else	{ 
    					tblBtn[ i ] = new JButton ( " " +  i  ) ;
    					cont1BtnChiffre.add( tblBtn[ i ] ) ;
    				}// de else
    		}// de for
    		cont1BtnChiffre.add( tblBtn[ 11 ] ) ;
    		cont1BtnChiffre.add( tblBtn[ 10 ] ) ;
     
    		// le contOpérateur
    		cont1BtnOper.setBorder(BorderFactory.createLineBorder(Color.blue));
    		cont1BtnOper.setBackground( Color.red ) ;
    		cont1BtnOper.setLayout( new GridLayout ( 4 , 1 , 1, 2)) ;
    		for ( int i = 0;  i < 4 ;  i++) {
    			if ( i == 3 )  				tblBtn[ i ] = new JButton ( " -"  ) ;	
    			if ( i == 2 )  				tblBtn[ i ] = new JButton ( " +"  ) ;	
    			if ( i == 1 )  				tblBtn[ i ] = new JButton ( " *"  ) ;	
    			if ( i == 0 )  				tblBtn[ i ] = new JButton ( " /"  ) ;	
    			//tblBtn[i].setPreferredSize( new Dimension ( 50, 40 ) ) ;
    			 cont1BtnOper.add( tblBtn [ i ] );
    		}//de for
     
    		// le Layout
    		cont1.setLayout( new BorderLayout ( 5 , 5 ) ) ; // espa Vert , espace horyz
    		cont1.add(cont1Label, BorderLayout.NORTH ) ;
    		cont1.add(cont1BtnChiffre , BorderLayout.CENTER ) ;
    		cont1.add(cont1BtnOper,  BorderLayout.EAST );
     
    		this.setContentPane( cont1 ) ;
    		this.setVisible( true ) ;
     
    	}// de constructeur
     
    }// de class Fenetre

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    le problème provient de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.setContentPane( cont1 ) ;
    remplace la par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
    this.add( cont1 ) ;
    d'autre part, quand tu détermine la preferredSize des différents composants il faut intégrer les espaces qu'il y aura entre chaque pour en déduire la preferredSize de cont1.

Discussions similaires

  1. dialogue entre fenetres
    Par funkadelic dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/01/2006, 13h55
  2. Pb lien entre fenetre de frame
    Par jeje_du_70 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/01/2006, 21h20
  3. [debutant][CSS] marges entre des éléments
    Par c-top dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 19/11/2005, 09h23
  4. [Jdialog] Question sur communication entre fenetre
    Par Oreste dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/03/2005, 11h23
  5. Difference entre fenetre et boite de dialog
    Par billyboy dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2003, 15h43

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