Probleme avec le layout null

Résolu
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009 - 16 avril 2007 à 16:44
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 23 avril 2007 à 13:02
bonjour;

pour ma boite de dialogue je l'ai decompose en 3 partie par border layout (north,center et south) alors north et south sont des panels de type flowlayout et center j,ai mis un layout de type null car je veut positionner et dimmensionner mes composants ; jusque la tous vas bien mais lorsque j'appelle cette boite de dialogue lors de l'ouverture seulement les 2 partie de type flawlayout s'affiche mais la partie dont le type de layout est null elle ne s'affiche pas et je doit redimensionner ma boite de dialogue a la main pour l'afficher;
j'ai penser a setSize de toute la boite de dialogue mais toujour le meme probleme.

16 réponses

cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
23 avril 2007 à 12:54
je me suis debrouiller qu'avec le  GridBagLayout .
il est vraiment tres interessent et facile a utiliser je vous conseil tous de l'utiliser.
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 avril 2007 à 17:17
Eh eh, c'est à toi de choisir : soit tu gère avec les layouts de java, soit tu gère tout en layout null, mais ne combine pas les deux !

Un bon conseil : si tu veux vraiment tout spécifier, utiliser un GridBagLayout qui te permettra de faire vraiment ce que tu veux, tout en conservant les avantages d'un layout (pas évident à utiliser au premier abord, mais ca vaut le coup !).
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
16 avril 2007 à 17:27
mais j'ai fait au debut tout ma  fenetre en layout null mais j'ai eu le probleme suivant : le psnel n'est pas afficher seulement les bouton de fermeture de reduire et de l'agrandissement.

et ce que je ne peut pas imposer un dimension par setSize  ou quoi faire? car je pense qu'il me faut du temps d'aprendre maintenant le gridbaglayout et je suis presser
et merci
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 avril 2007 à 17:51
et bien passe tout en layout null à ce moment là (plus de BorderLayout donc), bien que je déconseille l'utilisation du layout null : même si ca paraît plus simple à utiliser au début, avec un peu d'expérience, tu verras vite que dès que tu veux modifier ton interface graphique, c'est l'arrachage de cheuveux assuré !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
16 avril 2007 à 18:26
Salut:

Pour la partie du centre si tu ne veux pas utiliser les Layout, tu faire ceci;

class PartieCentrale extends JPanel {
    public PartieCentrale () {
       super ();

       setLayout (null);
       // Ajouter des composants
       // ...
    }
}

class MyDialogBox () extends JDialog {
    public MyDialogBox () {
       super ();
       // BorderLayout pour tous
       getContentPane ().setLayout (new BorderLayout ());

       // Ajouter partie centrale
       getContentPane ().add (new PartieCentrale (), BorderLayout.CENTER);

       // ...
       // ...
    }
}


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
16 avril 2007 à 20:44
moi je sait comment faire ce la Ombitious_Developper mais mon probleme est comment apparaitre mon dialogue box, car la partie de layout null ne s'affiche pas
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
16 avril 2007 à 20:58
Salut:

Bizzard.

Tu peux nous donner l'allure de ton code.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
16 avril 2007 à 21:03
Salut:

Pourquoi mettre ton layout à null?

Tu sais ce n'est pas professionel de plus tu vas te casser la tête pour positionner tes composants en calculant les bonnes coordoonées.

Renseignes toi bien sur les layouts en Java et tu vas voir que ça va te permettre d'économiser beaucoup de temps pour faire ton interface graphique.

Bonne chance camarade.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
16 avril 2007 à 21:06
voila ma class:


package pfe;


import java.awt.*;


import java.awt.event.ActionEvent;


import java.awt.event.ActionListener;


import javax.swing.*;


//import com.borland.jbcl.layout.XYLayout;


//import com.borland.jbcl.layout.*;


import java.awt.BorderLayout;


import java.awt.Font;


import java.awt.Rectangle;


/**


* Title: proxy


*


* Description:


*


* Copyright: Copyright (c) 2007


*


* Company:


*


* @author anis jaballah


* @version 1.0


*/


public class Authentification extends JDialog implements ActionListener {


JPanel panel1 = new JPanel();


JPanel panel2 = new JPanel();


JPanel insetsPanel1 = new JPanel();


JPanel insetsPanel2 = new JPanel();


JButton button1 = new JButton();


JLabel imageLabel = new JLabel();


ImageIcon image1 = new ImageIcon();


BorderLayout borderLayout2 = new BorderLayout();


FlowLayout flowLayout1 = new FlowLayout();


String product = "proxy ";


String version = "1.0";


String copyright = "Copyright (c) 2007";


String comments = "";


JButton jButton1 = new JButton();


JTextField jTextField1 = new JTextField();


JPasswordField jPasswordField1 = new JPasswordField();


JLabel jLabel1 = new JLabel();


JLabel jLabel2 = new JLabel();


JLabel jLabel3 = new JLabel();


BorderLayout borderLayout1 = new BorderLayout();


Panel panel3 = new Panel();


JLabel jLabel4 = new JLabel();


JLabel jLabel5 = new JLabel();


public Authentification(Frame parent) {


super(parent);


try {


setDefaultCloseOperation(DISPOSE_ON_CLOSE);


jbInit();


} catch (Exception exception) {


exception.printStackTrace();


}


}


public Authentification() {


this(null);


}


/**


* Component initialization.


*


* @throws java.lang.Exception


*/


private void jbInit() throws Exception {


image1 = new ImageIcon(pfe.Frame1.class.getResource("about.png"));


imageLabel.setIcon(image1);


setTitle("About");


this.getContentPane().setLayout(borderLayout1);


this.setSize(800,400);


panel1.setLayout(null);


panel2.setLayout(borderLayout2);


insetsPanel1.setLayout(flowLayout1);


insetsPanel2.setLayout(flowLayout1);


insetsPanel2.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));


button1.setText("OK");


button1.addActionListener(this);


jButton1.setText("cancel");


jButton1.addActionListener(new Authentification_jButton1_actionAdapter(this));


jLabel1.setText("Login");


jLabel1.setBounds(new Rectangle(21, 89, 117, 30));


jLabel2.setText("Mot de pass");


jLabel2.setBounds(new Rectangle(21, 140, 117, 29));


jLabel3.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 18));


jLabel3.setForeground(SystemColor.desktop);


jLabel3.setHorizontalAlignment(SwingConstants.CENTER);


jLabel3.setText("Authentification Systeme");


insetsPanel1.setBounds(new Rectangle(0, 267, 400, 33));


jPasswordField1.setBounds(new Rectangle(163, 140, 168, 30));


jTextField1.setBounds(new Rectangle(162, 89, 170, 30));


panel2.setBounds(new Rectangle(0, 0, 400, 62));


jLabel4.setText("jLabel4");


jLabel5.setText("jLabel5");


insetsPanel2.add(imageLabel, null);


panel2.add(jLabel3, java.awt.BorderLayout.CENTER);


panel2.add(insetsPanel2, BorderLayout.WEST);


insetsPanel1.add(button1, null);


insetsPanel1.add(jButton1);


panel1.add(jTextField1, null);


panel1.add(jPasswordField1, null);


panel1.add(jLabel2, null);


panel1.add(insetsPanel1, null);


panel1.add(panel2, null);


panel1.add(jLabel1, null);


this.getContentPane().add(panel3, java.awt.BorderLayout.NORTH);


panel3.add(jLabel5);


this.getContentPane().add(jLabel4, java.awt.BorderLayout.SOUTH);


this.getContentPane().add(panel1, java.awt.BorderLayout.CENTER);


setResizable(true);


// this.setSize(300,300);


}


/**


* Close the dialog on a button event.


*


* @param actionEvent ActionEvent


*/


public void actionPerformed(ActionEvent actionEvent) {


if (actionEvent.getSource() == button1) {


String login = jTextField1.getText();


char [] mdp =jPasswordField1.getPassword();


String mp = new String(mdp);


//String mp = mdp.toString();


System.out.println("logine est : " +login+ "\nmot de pass est :"+mp);


dispose();


}


}


public void jButton1_actionPerformed(ActionEvent e) {


}


}


 


class Authentification_jButton1_actionAdapter implements ActionListener {


private Authentification adaptee;


Authentification_jButton1_actionAdapter(Authentification adaptee) {


this.adaptee = adaptee;


}


public void actionPerformed(ActionEvent e) {


adaptee.jButton1_actionPerformed(e);


}


}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
16 avril 2007 à 21:38
Salut:
 
Je ne suis habitué avec JBuilder, mais penses à utiliser la méthode pack ().


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
16 avril 2007 à 22:02
mais ca revient au meme
0
Fifan Messages postés 26 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 10 mai 2007
17 avril 2007 à 10:20
Salut [auteurdetail.aspx?ID=832520 anisj1m],
je te conseille moi aussi l'utilisation d'un layout null.
Avec un tel layout, tu dois toi même calculer la taille et la position de tes composants, alors qu'avec un autre layout (GridBagLayout pour ne pas le citer), c'est le layout manager qui s'occupe de tout ça et même en cas d eredimessionnement de ta fenêtre.
Tu peux également jetter un oeuil à ZoneLayout que j'aime bien.

Si tu persiste avec un layout null ( libre à toi ) , essaies de définir la taille préférée de tes composants (setPreferredSize)...
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
17 avril 2007 à 10:58
merci, c'est bien le cas moi je dimensionne mes composant moi meme alors que le probleme pas dans la dimension des composants mais dans la dimension de la fenetre qui s'afiche tres petit et je n'arrive pas a afficher le layout null seulement si je redimensionne le apres son lancement; j'ai utiliser le fonction this.SetSize(300,400); mais elle n'a pas reslue le probleme
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 avril 2007 à 11:27
Pourtant avec un layout null (pour toute ta fenêtre et non uniquement pour un panel comme c'est le cas dans ton code !), le setSize devrait définir la taille de ta fenêtre.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
17 avril 2007 à 19:54
Salut Anis:

Si le problème persiste, et comme tu veux toujours utiliser un layout nul alors je te conseille de faire tout l'interface graphique avec un layout nul.

Personnellement, je crois au loi du tout ou rien.

Si pour deux ou
trois
boutons tu utilises un FlowLayout et pour la partie principale de ton application tu utilises un layout nul alors je te dis laisse tomber.

Bonne chance Annous.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 avril 2007 à 13:02
Au moins on sera arrivé à te montrer qu'il vaut mieux utiliser un Layout :p
0
Rejoignez-nous