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 :

[Swing] redimensionnement


Sujet :

AWT/Swing Java

  1. #1
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut [Swing] redimensionnement
    bonjour a tous,
    j'ai une JFrame de taille init (800,600) avec un BorderLayout dans laquelle j'ai un menuBar au NORTH et un panel au CENTER.
    le probleme est qu'en agrandissant ma fenetre, les composant reste dans leur taille initiale a gauche de la frame.
    j'ai fais un extends ComponentListener sur ma JFrame et j'ai redefini la methode componentResized comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void componentResized(ComponentEvent e){
    		if (e.getSource()==this){
    			menuBar.setPreferredSize(new Dimension(this.getX(),menuBar.getY()));
    			menuBar.revalidate();
    			panel.setPreferredSize(new Dimension(this.getX(),this.getY()));
    			panel.revalidate();
    			}
    		}
    mais la, les deux composants ne s'affiche pas (les composants du panel sont affichés )
    j'ai essayé d'enlever les revalidate(), la les composants s'affichent la premiere fois, mais une fois la frame agrandit, tout les composants disapraissent, y compris ceux du panel.
    si qq a une idee, elle est la bienvenue.

  2. #2
    Membre éprouvé Avatar de Actarus78
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 87
    Par défaut
    bonjour,

    As tu vraiment besoin de redefinir la méthode componentResized?? Avec l'objet JFrame tu as la méthode suivante qui permet ou non de redimenssioner ta Frame

    public void setResizable(boolean resizable)

    A moins que tes composants dans ton borderlayout soit de taille fixe, normalement ton redimensionement devrait fonctioner correctement en activant le setResizable.

  3. #3
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    j'ai mis setResizable(true), et ça a donné le meme resultat que sans le ComponentListener.
    A moins que tes composants dans ton borderlayout soit de taille fixe, normalement ton redimensionement devrait fonctioner correctement en activant le setResizable.
    tout mes composants sont ajoutées sans specifier de taille avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Container.add(Component,BorderLayout.POSITION)
    mais comme tu l'as dit, je n'arrive pas a comprendre pourquoi le BorderLayout ne gere pas le redimensionnement automatiquement.

  4. #4
    Membre éprouvé Avatar de Actarus78
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 87
    Par défaut
    Je viens de me rendre compte que tu utilises le gestionaire de placement BorderLayout pour ta menuBar, or il existe une methode pour JFrame pour faire le set de la menu Bar.

    Voici un exemple simple qui marche parfaitement pour le redimensionement, j espere que cela t'aideras dans ton débugage...

    Ps: J'ai mis expres un background et un jLabel dans mon composant JPanel pour te montrer que le redimensionement marche correctement avec la menubar et les composants situés dans donc gestionaire de placement (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
    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    public class TestJFrame {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		try{
     
    			new MyJFrame();			
    		}catch(Exception e){
    			System.out.println("e "+e);
    		}
    	}
     
     
    	public static class MyJFrame extends JFrame implements ActionListener, WindowListener{
     
    		JMenuBar menu = new JMenuBar();
    		JMenu menuFile = new JMenu("File");
    		JMenuItem exit = new JMenuItem("Exit");
     
    		public MyJFrame(){
    			super();
    			this.setSize(800,600);
    			this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    			this.setJMenuBar(myMenu());
    			this.setLayout(new BorderLayout());
    			this.add(myPanel(), BorderLayout.CENTER);
    			this.setVisible(true);
    		}
     
     
    		public JMenuBar myMenu(){
     
    			exit.addActionListener(this);
    			menuFile.add(exit);
    			menu.add(menuFile);
     
    			return menu;
    		}
     
    		public JPanel myPanel(){
    			JPanel jp = new JPanel();
    			jp.setLayout(new BorderLayout());
    			JLabel jl = new JLabel("Hello World", JLabel.CENTER);
    			jp.setBackground(Color.RED);
    			jp.add(jl, BorderLayout.CENTER);
     
    			return jp;
    		}
     
     
    		public void actionPerformed(ActionEvent arg0) {
    			if(arg0.getSource()==exit)System.exit(0);
    		}
     
    		public void windowOpened(WindowEvent arg0) {}
    		public void windowClosing(WindowEvent arg0) {}
    		public void windowClosed(WindowEvent arg0) {}
    		public void windowIconified(WindowEvent arg0) {}
    		public void windowDeiconified(WindowEvent arg0) {}
    		public void windowActivated(WindowEvent arg0) {}
    		public void windowDeactivated(WindowEvent arg0) {}
     
    	}
     
    }

  5. #5
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    merci beaucoup Actarus78.
    cela devrai m'aider.

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

Discussions similaires

  1. [Swing] Redimensionner composant GroupLayout()
    Par haykelFST dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 08/01/2013, 12h03
  2. Réponses: 9
    Dernier message: 21/11/2006, 17h12
  3. [swing] JScrollbar et redimensionnement automatique
    Par kaillou38 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/05/2006, 23h22
  4. problème de redimensionnement en swing
    Par Shixz dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/05/2006, 14h02
  5. [Swing][Jframe]Connaitre en continu le redimensionnement
    Par Sylario dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 10/03/2006, 09h56

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