Problème placement JButton

Problème placement JButton - Java - Programmation

Marsh Posté le 01-11-2009 à 19:59:07    

Bonjour, j'ai un problème avec mes JButton, je n'arrive pas à les faire positionner ou dimensionner comme je veux, j'ai beau changer n'importe quelle valeur dans mon code, ça ne change pas et je dois le refaire parce qu'eclipse a merder et à supprimer quelques fichiers dont ce fichier là qui était fait comme je le souhaitait et je ne me souviens plus trop dans quel ordre j'avais tout mis, etc..
 
Donc mon problème est que je voudrais que tout mes JButton aient la même dimensions soit de 300 comme il y a des 2 bordures de 25 et que ma JFrame fait 350..
 
Voici mon code:

Citation :


package app;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.*;
 
public class Menu extends JFrame implements ActionListener{
 
 
 // Attributs
 private PopClient pop;
 private JMenuItem quitter;
 private JButton top;
 private JButton dele;
 private JButton list;
 private JButton rset;
 private JButton retr;
 private JButton quit;
 private JButton connecter;
 private JButton cancel;
 private JTextArea messageJText;  
 
 
 
 public Menu()
 {
  // Donner un titre à  la fenetre
  this.setTitle("PopServer" );
  // Mettre une taille à  la fenetre (largeur,hauteur)
  this.setSize(350,500);
  // Empecher le redimensionnement de la fenetre
  this.setResizable(false);
  // Positionner la fenetre (x,y), null pour le centre
  this.setLocationRelativeTo(null);
  // L'application s'arrête lorsque la fenêtre est fermée.
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //Fonction pour initialiser les composants
  this.init();
  // Rendre visible la fenetre
  this.setVisible(true);
 }
 
 private void init()
 {
  // Menu
  JMenuBar menubar = new JMenuBar();
  JMenu menu = new JMenu("Fichier" );
  quitter = new JMenuItem("Quitter" );
  // Ajouter le menuitem au menu
  menu.add(quitter);
  menubar.add(menu);
  quitter.addActionListener(this);
  // Positionner le menu en haut de la fenetre
  this.setJMenuBar(menubar);
 
  JPanel panelMenu = new JPanel();
  top = new JButton("Afficher un message (top)" );
  list = new JButton("Afficher un message (list)" );
  dele = new JButton("Supprimer un message (dele)" );
  retr = new JButton("Afficher un message (retr)" );
  rset = new JButton("Réinitialiser les messages (rset)" );
  quit = new JButton("Quitter l'application (quit)" );
  messageJText = new JTextArea();
  // setBounds(int x, int y, int width, int height)
  top.setSize(300, 50);
  top.setBounds(25, 20, 300, 25);
  list.setBounds(50, 80, 300, 25);
  dele.setBounds(25, 140, 300, 25);
  retr.setBounds(25, 200, 300, 25);
  rset.setBounds(25, 260, 300, 25);
  quit.setBounds(25, 320, 300, 25);
  messageJText.setBounds(25, 270, 300, 25);
  panelMenu.add(top);
  panelMenu.add(list);
  panelMenu.add(dele);
  panelMenu.add(retr);
  panelMenu.add(rset);
  panelMenu.add(quit);
  panelMenu.add(messageJText);
  panelMenu.add(messageJText);
   
  getContentPane().add(panelMenu, BorderLayout.CENTER);
 }
 
 
 public void actionPerformed(ActionEvent e)
 {
  if (e.getSource() == quitter)
  {
   System.exit(0);
  }
 }
 
 
 
 
 
}
 

Reply

Marsh Posté le 01-11-2009 à 19:59:07   

Reply

Marsh Posté le 03-11-2009 à 03:09:03    

setBounds() est une méthode low level de AWT, utilisée par Swing. Il ne se passe rien parce que Swing appelle cette méthode après toi et positionne et redimensionne les éléments d'après leur Layout et d'autres propriétés.
 
Tes boutons ont l'air d'être positionnés l'un au-dessus de l'autre, tu devrais donc utiliser un BoxLayout en Swing.
Tu peux aussi utiliser setPreferredSize() pour donner la taille désirée de ton bouton.
 
Si tu as du mal, utilise l'éditeur de GUI "Matisse" de Netbeans, il te permet de positionner et aligner tes éléments comme tu le désires et génère le code pour toi.


Message édité par cbeyls le 03-11-2009 à 03:10:53
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed