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 :

Impossible de changer le dimensionnement d'une fenêtre [JAVA]


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2018
    Messages : 59
    Par défaut Impossible de changer le dimensionnement d'une fenêtre [JAVA]
    Bonjour, je viens vers vous car j'ai un problème, je pense tout bête que je n'arrive pas à faire. Je travaille sur un projet, sur l'IDE Netbeans et ce projet contient plusieurs MenuItem qui affichent plus ou moins de choses.

    Donc grâce à Netbeans, je forme mes éléments et je fais des événements dessus. Mon problème est que je n'arrive pas à redimensionner la fenêtre de l'application Java.

    J'ai essayé plusieurs options mais rien du tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dimension fffd = new Dimension(100, 600);
    setMaximumSize(fffd);
    setMinimumSize(fffd);
    mais aussi
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setMinimumSize(new java.awt.Dimension(100,600));
    mais après tout ceci rien.. Le truc qui est étrange, c'est que ça marche sur deux items qui sont dans ma jMenuBar mais ça marche pas sur les deux autres...

    Voici comment je fais pour les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 775, 290, -1));
    setMinimumSize(new java.awt.Dimension(1000, 875));
    Merci beaucoup pour l'aide ! Je continu les recherches de mon côté

  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 : 56
    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,

    Tu as un Exemple Complet Minimal à nous présenter ? Parce qu'il n'y a pas de raison que setSize() appelée sur la bonne instance de JFrame ne fonctionne pas. setMinimumSize et setMaximumSize c'est pour définir le minimum et le maximum : ça n'a d'effet que lorsque l'utilisateur redimensionne la fenêtre à la souris.

    Citation Envoyé par tomlrt53 Voir le message
    Le truc qui est étrange, c'est que ça marche sur deux items qui sont dans ma jMenuBar mais ça marche pas sur les deux autres...
    ça ne veut rien dire du tout, cette phrase : quel rapport entre les menus d'une barre de menu et la taille d'une JFrame ? Qu'est-ce qui ne marche pas sur certains et pas sur d'autres ? Quelle différence entre ceux pour lesquels je ne sais quoi "marche" et ceux pour lesquels je ne sais quoi "ne marche pas".
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2018
    Messages : 59
    Par défaut
    Je reprends tout depuis le début. Pour introduire, je n'ai pas le droit de tout dévoiler car c'est un projet confidentiel.

    J'ai donc une jFrame, qui comporte ceci :

    Nom : 2018-04-23 13_25_21-Configurateur E2.png
Affichages : 465
Taille : 6,5 Ko

    J'ai un menu client (en anglais et en français) et j'ai un menu technicien (en anglais et en français toujours.) Le menu client est le menu de base, avec des éléments (jComboBox, jTextField, jLabel) et le menu technicien est le même menu client mais avec une fenêtre plus grande et donc des informations/éléments en plus.

    Pour le moment, lorsque je clique sur Menu Technicien, Anglais ou Français la fenêtre s'agrandit avec les dimensions que je lui ai donner. J'ai fais ceci grâce à cette ligne ci :

    Nom : Capture.PNG
Affichages : 528
Taille : 23,6 Ko

    Tout cela marche très bien. Cependant, il doit être possible de quitter le menu technicien en appuyant sur Menu client puis Anglais ou Français. Donc lorsque j'appuie sur ces deux boutons (un au choix), les informations du menu technicien s'enlèvent, sont invisibles sur la fenêtre mais le redimensionnement ne se fait pas.

    Voici ce que j'ai essayé (avec la même ligne de code, juste les dimensions qui changent) :

    Nom : Capture1.PNG
Affichages : 477
Taille : 24,7 Ko

    Suite à ceci, j'ai donc essayé les autres lignes de programme que du post original, mais pareil, ça ne fonctionne pas. C'est étrange quand même.

  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 : 56
    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
    C'eut été mieux de copier les codes en texte plutôt qu'en image. Et tu n'es pas obligé de me montrer tout en projet, d'ailleurs, ce n'est pas ce que j'ai demandé. J'ai demandé un Exemple Complet Minimal. Un petit programme qui montre ce que tu fais et qui permet de voir le comportement que tu obtiens. Tu n'es même pas obligé de mettre les bons libellés (des "menu 1", "menu 2" auraient suffit).

    Comme je l'ai déjà dit, setMinimumSize() et setMaximumSize() ne modifie pas la taille de la fenêtre (sauf si la taille actuelle contredit l'application de ces méthodes).

    Avec le code suivant, la fenêtre change de taille (passer à 600×600)
    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
    JFrame frame = new JFrame("Exemple");
     
    		JPanel panel = new JPanel(new GridBagLayout());
     
    		JButton button = new JButton("Clic me!");
     
    		button.addActionListener(e-> {
    			frame.setMinimumSize(new Dimension(600,600));
    		});
     
    		panel.add(button);
    		frame.add(panel);
     
    		frame.setSize(new Dimension(300, 300));
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    Avec celui-ci, pas de changement, la JFrame reste à 300×300
    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
    		JFrame frame = new JFrame("Exemple");
     
    		JPanel panel = new JPanel(new GridBagLayout());
     
    		JButton button = new JButton("Clic me!");
     
    		button.addActionListener(e-> {
    			frame.setMinimumSize(new Dimension(200,200));
    		});
     
    		panel.add(button);
    		frame.add(panel);
     
    		frame.setSize(new Dimension(300, 300));
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    Il faut faire un setSize() pour changer la taille d'une JFrame, le setMinimumSize et setMaximumSize c'est juste pour limiter la taille minimum et maximum, comme leur nom l'indique.

    Si je comprends bien, tu as des éléments dans ta fenêtre que tu veux cacher en réduisant la taille de la fenêtre. Je pense qu'il serait plus judicieux d'avoir deux JPanel et d'alterner.
    Regarde ce code et teste-le :
    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
    		JFrame frame = new JFrame("Exemple");
     
    		JPanel panel = new JPanel(new GridBagLayout());
    		JPanel filler = new JPanel();
    		filler.setMinimumSize(new Dimension(300, 300));
    		filler.setPreferredSize(new Dimension(300, 300));
    		GridBagConstraints gbc = new GridBagConstraints();
    		gbc.gridx=0;
     
    		JButton button = new JButton("Clic me!"); 
     
    		button.addActionListener(e-> {
    			JOptionPane.showMessageDialog(button, "Et oui, ça marche");
    		});
     
    		panel.add(filler,gbc);
    		panel.add(button,gbc); 
    		frame.add(panel);
     
    		frame.setSize(new Dimension(300, 300));
    		frame.setResizable(false);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    Il n'est pas possible de voir le bouton, pourtant si tu appuies sur la barre d'espace, il se déclenche bien quand même.

    En alternant avec 2 panels et en utilisant un pack et une relocation tu échangeras bien entre deux interfaces. Par exemple, avec cardlayout :
    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
    public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Exemple");
     
    		JPanel panel1 = createPanel1();
    		JPanel panel2 = createPanel2();
    		CardLayout cardLayout = new CardLayout();
    		JPanel panel = new JPanel(cardLayout);
    		panel.add(panel1,"panel1");
    		panel.add(panel2,"panel2");
    		frame.add(panel);
     
    		JMenuBar menuBar = new JMenuBar();
    		JMenu menu = new JMenu("Menu");
    		menuBar.add(menu);
    		JMenuItem menuItem1 = new JMenuItem("Afficher 1");
    		menu.add(menuItem1);
    		JMenuItem menuItem2 = new JMenuItem("Afficher 2");
    		menu.add(menuItem2);
    		frame.setJMenuBar(menuBar);
     
    		menuItem1.addActionListener(e-> showPanel(panel, cardLayout, panel1, "panel1"));
    		menuItem2.addActionListener(e-> showPanel(panel, cardLayout, panel2, "panel2"));
     
    		frame.pack();
    		frame.setResizable(false);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
     
    	}
     
    	private static void showPanel(JPanel container, CardLayout cardLayout, JPanel panel, String id) {
    		cardLayout.show(container, id);
    		JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(panel);
    		Dimension dim = panel.getPreferredSize();
    		container.setPreferredSize(dim);
    		Rectangle bounds = frame.getBounds();
    		frame.pack();
    		Rectangle newbounds = frame.getBounds();
    		frame.setLocation((int)(bounds.getCenterX()-newbounds.getWidth()/2), (int)(bounds.getCenterY()-newbounds.getHeight()/2));
    	}
     
    	public static JPanel createPanel1() {
    		JPanel panel = new JPanel(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
    		gbc.insets=new Insets(3, 3, 3, 3);
    		gbc.fill=GridBagConstraints.HORIZONTAL;
    		for(int i=0; i<10; i++) {
    			gbc.gridy=i;
    			for(int j=0; j<10; j++) {
    				gbc.gridx=j;
    				panel.add(new JButton("Button " + (1 +(i*10) + j)), gbc);
    			}
    		}
    		return panel;
    	}
     
    	public static JPanel createPanel2() {
    		JPanel panel = new JPanel(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
    		gbc.insets=new Insets(3, 3, 3, 3);
    		gbc.fill=GridBagConstraints.HORIZONTAL;
    		for(int i=0; i<5; i++) {
    			gbc.gridy=i;
    			for(int j=0; j<5; j++) {
    				gbc.gridx=j;
    				panel.add(new JLabel("Label " + (1 +(i*10) + j)), gbc);
    			}
    		}
    		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.

Discussions similaires

  1. Comment changer l'apparence d'une fenêtre
    Par bandit boy dans le forum C++Builder
    Réponses: 13
    Dernier message: 26/06/2011, 17h12
  2. [WD9] Changer le contenu d'une fenêtre interne
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 16h02
  3. Changer le titre d'une fenêtre dynamiquement
    Par Dnx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/11/2005, 17h32
  4. changer le "look" d'une fenêtre...
    Par just1980 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 20/04/2005, 20h23
  5. Changer l'icône d'une fenêtre à partir d'un .res
    Par henderson dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/03/2003, 11h48

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