Partage
  • Partager sur Facebook
  • Partager sur Twitter

Redimensionnement components

    24 mai 2019 à 19:03:02

    Bonjour à tous :)

    Je tente de créer une fenêtre avec 4 éléments :
    un JLabel, un JTextField et 2 JButton.

    Seulement voilà lorsque je tente de redimensionner mes éléments via monElement.setSize(new Dimension( valeur1, valeur2));

    Les modifications ne s'opèrent pas ... :( 

    Est ce que je dois utiliser une autre méthode ? Est ce que je dois écrire cette ligne de code à un autre endroit ? 

    Voici le code : 

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Font;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    
    public class WindowGame {
    
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					new WindowGame();					
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	public WindowGame() {
    		initialize();
    	}
    
    	private void initialize() {
    		JFrame frame = new JFrame();
    		frame.setBackground(Color.LIGHT_GRAY);
    		frame.getContentPane().setBackground(Color.LIGHT_GRAY);
    		frame.getContentPane().setLayout(new BorderLayout(0, 0));
    		frame.setSize(300, 200);
    		frame.setTitle("Find the flag !");
    		frame.setLocationRelativeTo(null);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setVisible(true);
    		
    		JPanel panel = new JPanel();
    		panel.setBackground(Color.LIGHT_GRAY);
    		frame.getContentPane().add(panel, BorderLayout.CENTER);
    		panel.setLayout(new BorderLayout(0, 0));
    		
    		JLabel title = new JLabel("Find the Flag !");
    		title.setBackground(Color.LIGHT_GRAY);
    		title.setFont(new Font("Bahnschrift", Font.PLAIN, 35));
    		title.setHorizontalAlignment(SwingConstants.CENTER);
    		title.setSize(new Dimension(15,50));
    		frame.add(title, BorderLayout.NORTH);
    		
    		JTextField txtPseudo = new JTextField("Pseudo");
    		txtPseudo.setBackground(Color.DARK_GRAY);
    		txtPseudo.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
    		txtPseudo.setForeground(Color.WHITE);
    		txtPseudo.setHorizontalAlignment(SwingConstants.CENTER);
    		txtPseudo.setToolTipText("Entre ici ton pseudo");
    		txtPseudo.setPreferredSize(new Dimension(15,50));
    		txtPseudo.setColumns(10);
    		panel.add(txtPseudo, BorderLayout.CENTER);
    		
    		JButton btnJouer = new JButton("Jouer");
    		btnJouer.setBackground(Color.DARK_GRAY);
    		btnJouer.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
    		btnJouer.setForeground(Color.WHITE);
    		btnJouer.setToolTipText("Clique pour jouer !");
    		btnJouer.setPreferredSize(new Dimension(15,50));
    		panel.add(btnJouer, BorderLayout.SOUTH);
    		
    		JButton btnQuitter = new JButton("Quitter...");
    		btnQuitter.setForeground(Color.WHITE);
    		btnQuitter.setBackground(Color.DARK_GRAY);
    		btnQuitter.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
    		btnQuitter.setToolTipText("Clique ici pour quitter");
    		btnQuitter.setPreferredSize( new Dimension( 200, 50 ) );
    		frame.add(btnQuitter, BorderLayout.SOUTH);	
    				
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2019 à 10:04:30

      Bonjour,

      Le problème vient du layout utilisé. Avec borderlayout, la largeur ou hauteur utilisée est proportionnelle à la fenêtre donc c'est très difficile de redimensionner des éléments (en général on rajoute un deuxième élément sur la même ligne pour les redimensionner mais c'est pas terrible).

      Le mieux dans ton cas est d'utiliser l'absolute layout ou le group layout. Après pour bien utiliser ces layout je te conseille d'utiliser le plugin Windowbuilder sous éclipse ou l'interface graphique sous netbean et tu fais le positionnement des éléments en 2 minutes alors qu'en codant tout t'aurais passé 1 heures. Voilà par exemple le code de l'interface fait avec windowbuilder :

      import java.awt.EventQueue;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      import javax.swing.JButton;
      import javax.swing.JLabel;
      import java.awt.Color;
      import javax.swing.JTextField;
      import java.awt.BorderLayout;
      import java.awt.Dimension;
      import java.awt.Font; 
      import javax.swing.SwingConstants;
       
      public class WindowGame {
       
          public static void main(String[] args) {
              EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      try {
                          new WindowGame();                  
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              });
          }
       
          public WindowGame() {
              initialize();
          }
       
          private void initialize() {
              JFrame frame = new JFrame();
              frame.setBackground(Color.LIGHT_GRAY);
              frame.getContentPane().setBackground(Color.LIGHT_GRAY);
              frame.setSize(363, 304);
              frame.setTitle("Find the flag !");
              frame.setLocationRelativeTo(null);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setVisible(true);
              frame.getContentPane().setLayout(null);
               
              JPanel panel = new JPanel();
              panel.setBounds(48, 71, 255, 50);
              panel.setBackground(Color.LIGHT_GRAY);
              frame.getContentPane().add(panel);
              panel.setLayout(new BorderLayout(0, 0));
               
              JLabel title = new JLabel("Find the Flag !");
              title.setLocation(48, 11);
              title.setBackground(Color.LIGHT_GRAY);
              title.setFont(new Font("Bahnschrift", Font.PLAIN, 35));
              title.setHorizontalAlignment(SwingConstants.CENTER);
              title.setSize(new Dimension(255, 49));
              frame.getContentPane().add(title);
               
              JTextField txtPseudo = new JTextField("Pseudo");
              txtPseudo.setBackground(Color.DARK_GRAY);
              txtPseudo.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
              txtPseudo.setForeground(Color.WHITE);
              txtPseudo.setHorizontalAlignment(SwingConstants.CENTER);
              txtPseudo.setToolTipText("Entre ici ton pseudo");
              txtPseudo.setPreferredSize(new Dimension(15,50));
              txtPseudo.setColumns(10);
              panel.add(txtPseudo, BorderLayout.NORTH);
               
              JButton btnQuitter = new JButton("Quitter...");
              btnQuitter.setBounds(48, 193, 255, 50);
              btnQuitter.setForeground(Color.WHITE);
              btnQuitter.setBackground(Color.DARK_GRAY);
              btnQuitter.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
              btnQuitter.setToolTipText("Clique ici pour quitter");
              frame.getContentPane().add(btnQuitter); 
              
              JButton btnJouer = new JButton("Jouer");
              btnJouer.setBounds(48, 132, 255, 50);
              frame.getContentPane().add(btnJouer);
              btnJouer.setBackground(Color.DARK_GRAY);
              btnJouer.setFont(new Font("Bahnschrift", Font.PLAIN, 25));
              btnJouer.setForeground(Color.WHITE);
              btnJouer.setToolTipText("Clique pour jouer !");
              
                       
          }
      }

       ps: pour redimensionner les éléments il faut modifier les valeur de setBounds comme ceci : 

       setBounds(int x, int y, int width, int height)

      -
      Edité par Nemo404 25 mai 2019 à 10:34:22

      • Partager sur Facebook
      • Partager sur Twitter

      Redimensionnement components

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown