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 :

Erreur due à un JLabel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Par défaut Erreur due à un JLabel
    Bonjour à tous, voila je debute en Java mais pas en programmation, je suis a la base orienté web avec html, css , php et javascript.

    J'aimerai donc changer un peu d'horizon et apprendre de nouveau truc, d'où mon etude du java.

    Je tente de faire une fenetre perso car je trouve celle d'origine bien degueux, tous ce passe pour le mieux (encore un bug a regler pour le cursor de redimension mais bon ca ira).

    Là où j'ai un reel soucis est lorsque je tente de mettre du contenu dans la partie droite de l'ecran....

    Voici un apercu :

    Nom : erreur.jpg
Affichages : 161
Taille : 133,2 Ko
    Nom : sanserreur.jpg
Affichages : 148
Taille : 116,1 Ko

    Comme vous pouvez le voir lors de l'ajout d'un JLabel dans la partie de droite, cela degrade mon image, mais je ne sais pas pourquoi?
    Quelqu'un a une idée??

    Merci en tous cas

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    On a besoin du code pour se faire une idée.
    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.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Par défaut
    Mince... j'ai oublié :p

    VOici la page main qui est le point d'entrée du programme.

    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
     
    package customwindow;
    import customwindow.customWindow.CustomWindow;
    import javax.swing.SwingUtilities;
     
    /**
     *
     * @author Nicolas
     */
    public class Main {
        public static void main(String[] args) {
            //Singleton.getInstance().maj();
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    CustomWindow fenetre = new CustomWindow();  
                }
            });
        }
     
    }
    Ensuite le code de ma CustomWindow class

    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
     
    package customwindow.customWindow;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import javax.swing.JFrame;
     
    /**
     *
     * @author Nicolas
     */
    public class CustomWindow extends JFrame{
        private final Dimension dimension= new Dimension(1000,600);
        private final MainPanel pannel;
        public CustomWindow(){
            pannel = MainPanel.getInstance(dimension,this);
            setTitle("Custom Window");
            setSize(dimension);
            setUndecorated(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
            setVisible(true);
            setContentPane(pannel);
        }
    }
    Ensuite le code de mon MainPanel -> qui est le contentPane

    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
     
    package customwindow.customWindow;
     
    import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Toolkit;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.BorderFactory;
    import javax.swing.JPanel;
     
    /**
     *
     * @author Nicolas
     */
    public class MainPanel extends JPanel{
        private static MainPanel instance;
        //Les differents panneau.
        private final Menu      mainMenu;
        private final Content   myContent;
        private final MainTitle Title;
        private final MenuWindow actionWindow;
        //les couleurs
        private final Color grisfonce           =   Color.decode("#222222");
        //Divers
        private final GridBagConstraints gbc    = 	new GridBagConstraints();
        private boolean candrag                 =   true;
        private String  redimension             =   "non";
        private static int     mainPanelHeight  =   600;
        private static int     mainPanelWidth   =   1000;
        //Gestion du redimensionnement
        private int minWidth                    = 800;
        private int minHeight                   = 400;
        //Constructeur
        private MainPanel(Dimension dimension,CustomWindow fenetre){
            setPreferredSize(dimension);
            mainPanelHeight =   (int) dimension.getHeight();
            mainPanelWidth  =   (int) dimension.getWidth();
            mainMenu        =   Menu.getInstance(dimension);
            myContent       =   Content.getInstance(dimension);
            Title           =   MainTitle.getInstance(new Dimension(mainPanelWidth-302,50),fenetre);
            actionWindow    =   MenuWindow.getInstance(fenetre);
            System.out.println(mainPanelHeight+"-"+mainPanelWidth);
            setLayout(new GridBagLayout());
            setBackground(grisfonce);
    	gbc.gridx       =   0;
            gbc.gridy       =   0;
            gbc.gridheight  =   2;
            gbc.gridwidth   =   1;
            add(mainMenu, gbc);
            gbc.gridx       =   1;
            gbc.gridheight  =   1;
            add(Title, gbc);
            gbc.gridx       =   2;
            add(actionWindow, gbc);
            gbc.gridx       =   1;
            gbc.gridy       =   1;
            gbc.gridwidth   =   2;
            add(myContent,gbc);
     
     
     
        }
     
        @Override
     
        public void paintComponent(Graphics g){
    	super.paintComponent(g); 
            Dimension dimension = new Dimension(getWidth(),getHeight());
    	changeSize(dimension);
        }  
        public static MainPanel getInstance (Dimension dimension,CustomWindow fenetre){
        if (instance==null){
            instance = new MainPanel(dimension,fenetre);
        }
        return instance;
        }
        public static void changeSize(Dimension dimension){
            mainPanelHeight = (int)dimension.getHeight();
            mainPanelWidth = (int)dimension.getHeight();
    	instance.setPreferredSize(dimension);
            Menu.changeSize(dimension);
            Content.changeSize(dimension);
            MainTitle.changeSize(dimension);
            System.out.println("lol"+mainPanelHeight+"-"+mainPanelWidth);
        }
    }
    J'ai retirer la partie listener qui ne sert a rien au probleme

    Ma class Maintitle pour la partie barre de titre:
    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
     
    package customwindow.customWindow;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Toolkit;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
     
    /**
     *
     * @author Nicolas
     */
    public class MainTitle extends JPanel{
        private static MainTitle instance;
        private final Color grisfonce       =   Color.decode("#222222");
        private final JLabel LabelTitle	=   new JLabel();
        private static boolean candrag = true;
        private int dragOriginX,dragOriginY;
        private MainTitle(Dimension dimension,CustomWindow fenetre) {
            if(candrag){
    		setCursor(new Cursor(Cursor.MOVE_CURSOR));
    	}else{
    		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    	}
            setMinimumSize(dimension);
            setPreferredSize(dimension);
            setBackground(grisfonce);
            LabelTitle.setText("Ma premiere fenetre perso");
            LabelTitle.setBorder(new EmptyBorder(10,10,10,10));
            LabelTitle.setForeground(Color.white);
            setLayout(new BorderLayout());
            add(LabelTitle, BorderLayout.NORTH);
     
            /*-------------------------------------------------------------
    	 * 
    	 * GESTION DU DRAG DE LA FENETRE SUR LA BARRE TITRE
    	 * 
    	 -------------------------------------------------------------*/
        this.addMouseMotionListener(new MouseAdapter(){
        	 public void mouseDragged(MouseEvent e){ 
                if(candrag){
                   int newX = fenetre.getLocation().x+e.getX() - dragOriginX;
                   int newY = fenetre.getLocation().y+e.getY() - dragOriginY;
                   fenetre.setLocation(newX,newY);
                }
        	 }
        });
        this.addMouseListener(new MouseAdapter(){
        	public void mousePressed(MouseEvent e){
        		dragOriginX=e.getX();
        		dragOriginY=e.getY();
        	}
        });
        }
        public static MainTitle getInstance (Dimension dimension,CustomWindow fenetre){
        if (instance==null){
        instance = new MainTitle(dimension,fenetre);
        }
        return instance;
        }
        public static void changeSize(Dimension dimension){
           Toolkit toolkit = Toolkit.getDefaultToolkit();
        	Dimension screenX = toolkit.getScreenSize();
          if((int)dimension.getWidth() == (int)screenX.getWidth()){
              candrag = false;
              instance.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
          }else{
              instance.setCursor(new Cursor(Cursor.MOVE_CURSOR));
              candrag = true;
          }
          instance.setMinimumSize(new Dimension((int)dimension.getWidth()-302,50));
          instance.setPreferredSize(new Dimension((int)dimension.getWidth()-302,50));
        }
    }
    Ma class pour mon menu principale (l'orange)
    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
     
    package customwindow.customWindow;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
     
    /**
     *
     * @author Nicolas
     */
    public class Menu extends JPanel{
        private static Menu instance;
        private final Color orange      = Color.decode("#f2a809");
        private final Color grisfonce   =   Color.decode("#222222");
        JPanel pane = new JPanel();
        JLabel image = new JLabel(new ImageIcon("D:\\JavaWorkspace\\CustomWindow\\src\\images\\perso\\master.png"));
        private Menu(Dimension dimension){
            setMinimumSize(dimension);
            setPreferredSize(dimension);
            setBackground(orange);
            setBorder(BorderFactory.createLineBorder(grisfonce));
            setLayout(new BorderLayout());
            image.setPreferredSize(new Dimension(180,180));
            image.setBorder(new EmptyBorder(10,10,10,10));
            add(image, BorderLayout.NORTH);
        }
        public static Menu getInstance (Dimension dimension){
        if (instance==null){
        instance = new Menu(new Dimension(200, (int) dimension.getHeight()-2));
        }
        return instance;
        }
     
        public static void changeSize(Dimension dimension){
          instance.setMinimumSize(new Dimension(200, (int) dimension.getHeight()-2));
          instance.setPreferredSize(new Dimension(200, (int) dimension.getHeight()-2));
        }
    }
    La page pour le menu fenetre (fermer agrandir reduire)

    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
     
    package customwindow.customWindow;
     
    import java.awt.Color;
    import java.awt.Cursor;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.Toolkit;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    /**
     *
     * @author Nicolas
     */
    public class MenuWindow extends JPanel{
        private static MenuWindow instance;
        private final JLabel LabelExit	=   new JLabel(new ImageIcon("D:\\JavaWorkspace\\CustomWindow\\src\\images\\icon_exit.png"));
        private static  JLabel LabelMaximize =   new JLabel(new ImageIcon("D:\\JavaWorkspace\\CustomWindow\\src\\images\\icon_maximize.png"));
        private final JLabel LabelMinimize 	=   new JLabel(new ImageIcon("D:\\JavaWorkspace\\CustomWindow\\src\\images\\icon_minimize.png"));
        private final Color grisfonce       =   Color.decode("#222222");
     
     
        private MenuWindow(CustomWindow fenetre){
            setPreferredSize(new Dimension(100,50));
            setMinimumSize(new Dimension(100,50));
            setBackground(grisfonce);
     
    	LabelExit.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
            LabelExit.setCursor(new Cursor(Cursor.HAND_CURSOR));
     
    	LabelMaximize.setCursor(new Cursor(Cursor.HAND_CURSOR));
    	LabelMaximize.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     
    	LabelMinimize.setCursor(new Cursor(Cursor.HAND_CURSOR));
    	LabelMinimize.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     
    	add(LabelMinimize);
    	add(LabelMaximize);
    	add(LabelExit);
     
     
        }
        public static MenuWindow getInstance (CustomWindow fenetre){
        if (instance==null){
            instance = new MenuWindow(fenetre);
        }
        return instance;
        }
    }
    'ai retire la partie listener ici aussi

    Reste plus que la partie Content (qui contient le contenu de l'app)

    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
     
    package customwindow.customWindow;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    /**
     *
     * @author Nicolas
     */
    public class Content extends JPanel{
        private final Color grisfonce   =   Color.decode("#222222");
        private static Content instance;
        private Content(Dimension dimension) {
            setMinimumSize(dimension);
            setPreferredSize(dimension);
            setBackground(grisfonce);
        }
        public static Content getInstance (Dimension dimension){
        if (instance==null){
        instance = new Content(new Dimension((int)dimension.getWidth()-200, (int) dimension.getHeight()-52));
        }
        return instance;
        }
        public static void changeSize(Dimension dimension){
          instance.setMinimumSize(new Dimension((int)dimension.getWidth()-200, (int) dimension.getHeight()-52));
          instance.setPreferredSize(new Dimension((int)dimension.getWidth()-200, (int) dimension.getHeight()-52));
        }
     
    }
    Voila merci

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Ça fait beaucoup de code à analyser, je regarderai en détail plus tard, quand j'aurai le temps. Mais j'ai regardé vite fait et je vois que tu redimensionnes tes composants à partir des méthodes paint() : pour rédimensionner des composants en réaction de redimensionnment d'autres composants, tu devrais plutôt utiliser ComponentAdapter (méthode componentResized()), parce que là tu redimensionnes des composants en cours de (re)dessin : ça risque forcément d'avoir des effets de bord sur l'affichage.
    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.

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Par défaut
    OK merci!
    Tu parles de la methode paintComponent(); que je devrais remplacer par quoi???

    Dois je la redefinir dans chaque class extends du JPanel?

    encore merci!

    Edit:
    En modifiant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void paintComponent(Graphics g){
    	super.paintComponent(g); 
            Dimension dimension = new Dimension(getWidth(),getHeight());
    	changeSize(dimension);
        }
    par ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public void componentResized(Graphics g){
            Dimension dimension = new Dimension(getWidth(),getHeight());
    	changeSize(dimension);
        }
    Alors je n'ai que ma MAINPANEL qui se modifie.. les autres composants non...

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Normalement, on ne devrait pas avoir à redimensionner soi-même les composants : on confie le dimensionnement, et le placement, à des LayoutManager, et on applique des contraintes (par setPreferredSize(), setMinimumSize() et setMaximumSize()) qui seront exploitées par les LayoutManager. Si on veut contrôler soi-même le dimensionnement, sans LayoutManager, le mieux est d'enregistrer (par addComponentListener()) un écouteur de type ComponentListener (dont ComponentAdapter est une implémentation par défaut, qui ne fait rien, et qui permet de n'implémenter que les méthodes de ComponentListener qu'on a besoin de modifier). Lorsque la taille d'un composant est modifié, la méthode componentResized() du listener (ou des listeners, parce qu'on peut en enregistrer plusieurs) est invoquée : dans cette méthode, on répercute les modifications de taille des composants fils, qui eux-même, donc, vont déclencher l'évenement de redimensionnement, qu'on interceptera dans leur propre ComponentListener,.componentResized(), et donc on pourra redimensionner leurs fils, et ainsi de suite.

    Exemple :

    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
    public class DemoComponentResized {
     
    	public static void main(String[] args) {
     
    		SwingUtilities.invokeLater( () -> new DemoComponentResized() );
     
    	}
     
    	public DemoComponentResized() {
    		JFrame frame = new JFrame("Exemple");
    	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		frame.getContentPane().add( createPanel() );
     
    		frame.setSize(100, 100);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    	}
     
    	private Component createPanel() {
    		JPanel panel = new JPanel();
    		panel.setLayout(null); // on supprime le LayoutManager, pour gérer soi-même les dimensionnements
     
    		JPanel subPanel = new JPanel();
    		subPanel.setBackground(Color.RED);
     
    		panel.add(subPanel);
     
    		panel.addComponentListener(new ComponentAdapter() {
     
    			@Override
    			public void componentResized(ComponentEvent e) {
    				int componentWidth = e.getComponent().getWidth();
    				int componentHeight = e.getComponent().getHeight();
    				int subPanelWidth = componentWidth/3; // largeur égale tiers de la largeur du parent
    				int subPanelHeight = 50; // hauteur fixe
    				int x = (componentWidth - subPanelWidth ) / 2; // centrage
    				int y = (componentHeight/3) - subPanelHeight / 2; // centrage au tiers de la hauteur
    				if ( y<0 ) { // si le composant dépasse en haut 
    					y=0; // on le force au bord haut
    				}
    				if ( y + subPanelHeight > componentHeight ) { // si le composant dépasse en bas
    					subPanelHeight = 0; // le composant disparait
    				}
    				subPanel.setBounds(x, y,subPanelWidth, subPanelHeight); // on applique les dimensions calculées
    			}
     
    		});
     
    		return panel;
    	}
     
    }
    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 8
    Par défaut
    VOila en gros l'architecture de mon design:

    Nom : Maquette.jpg
Affichages : 142
Taille : 72,6 Ko

    Pour se faire j'ai utilisé le gridbagLayout :

    Menu x,y : 0 tailleHeight :2
    Title x,y=1,0 tailleHeight:1
    Zoneferme x,y=2,0
    contenu x,y=1,1 tailleWidth: 2

    Voila en gros...

    Comment je fais alors pour une fois que mon contentpane se redimensionne, le reste (menu,title,zoneferme,contenu etc) soit mis a jours??

    Edit ok j'ai tenté une autre approche avec le borderlayout:

    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
     
    /*Partie de droite contentu la zone titre, zone action (fermer, reduire, etc) ainsi que le contenu de l'app*/
            ContentAndTitle.setBackground(grisfonce);
            ContentAndTitle.setLayout(new BorderLayout());
     
            TitleAndClose.setPreferredSize(new Dimension(ContentAndTitle.getWidth(),50));
            TitleAndClose.setLayout(new BorderLayout());
            TitleAndClose.add(Title,BorderLayout.CENTER);
            TitleAndClose.add(actionWindow,BorderLayout.EAST);
     
            ContentAndTitle.add(TitleAndClose,BorderLayout.NORTH);
            ContentAndTitle.add(myContent,BorderLayout.CENTER);
            setBackground(grisfonce);
            setBorder(BorderFactory.createLineBorder(grisfonce));
            setLayout(new BorderLayout());
            add(mainMenu, BorderLayout.WEST);
            add(ContentAndTitle, BorderLayout.CENTER);
            /*
            setLayout(new GridBagLayout());
            setBackground(grisfonce);
    	gbc.gridx       =   0;
            gbc.gridy       =   0;
            gbc.gridheight  =   2;
            gbc.gridwidth   =   1;
            add(mainMenu, gbc);
            gbc.gridx       =   1;
            gbc.gridheight  =   1;
            add(Title, gbc);
            gbc.gridx       =   2;
            add(actionWindow, gbc);
            gbc.gridx       =   1;
            gbc.gridy       =   1;
            gbc.gridwidth   =   2;
            add(myContent,gbc);
            
            */
    En commentaire c'est l'ancienne version.

Discussions similaires

  1. [Débutant] Erreur due à une valeur aléatoire dans un algorithme
    Par Globoxx dans le forum MATLAB
    Réponses: 4
    Dernier message: 31/10/2013, 11h23
  2. [Débutant] Erreur due au fichier "NtWin32.Mak" manquant
    Par jean222 dans le forum MATLAB
    Réponses: 30
    Dernier message: 27/02/2013, 17h25
  3. gestion erreurs dues au manque de données
    Par Jcorbeaux dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/01/2012, 10h12
  4. Erreur due à une valeur non disponible
    Par Poisell dans le forum Excel
    Réponses: 2
    Dernier message: 09/12/2010, 17h41
  5. erreur due à InsertAllOnSubmit()
    Par khawlita dans le forum Accès aux données
    Réponses: 1
    Dernier message: 03/04/2009, 21h43

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