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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
public class test extends JFrame implements ActionListener{
private JButton bouton;
private JButton bouton2;
private JButton bouton3;
public test(){
super();
build();//On initialise notre fenêtre
}
private void build(){
setTitle("Voila mo programme"); //On donne un titre à l'application
setSize(800,650); //On donne une taille à notre fenêtre
setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
setResizable(true); //On permet le redimensionnement
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
setContentPane(buildContentPane());
}
private JPanel buildContentPane(){
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
JLabel label = new JLabel ("étiquette");
JTextField textfield=new JTextField();
bouton = new JButton("Menu principal");
bouton.addActionListener(this);
bouton2 = new JButton("bouton1");
bouton2.addActionListener(this);
bouton3 = new JButton (new ImageIcon(getClass().getClassLoader().getResource("image/quitter.jpg")));
bouton3.addActionListener(this);
//Définissons nos contraintes pour les composants
GridBagConstraints MesBoutons = new GridBagConstraints();
/* le composant suivant à placer est notre étiquette.
Plaçont l'étiquette "Veuillez saisir le texte à traduire.*/
MesBoutons.gridx = 0;
MesBoutons.gridy = 2;
/* une seule cellule sera disponible pour ce composant. */
MesBoutons.gridwidth = 1;
MesBoutons.gridheight = 1;
MesBoutons.fill = GridBagConstraints.NONE;
/* Maintenant, nous voyons sur notre interface que le composant n'est pas le seul sur sa ligne.
Un champ de saisie le suit. Pour aligner correctement les etiquettes et les champs de saisie,
la ligne d'écriture nous facilite le travail. Nous allons l'utiliser ici. */
MesBoutons.anchor = GridBagConstraints.BASELINE_LEADING; // pas LINE_START ni WEST !!
/* Une petite marge autour du composant. Attention à toujours les mêmes marges à gauche, sinon les
* composants ne sont plus alignés. */
MesBoutons.insets = new Insets(10, 15, 490, 0);
panel.add(label, MesBoutons);
/* passons au composant suivant: le champ de saisie. */
MesBoutons.gridx = 1; /* une position horizontalement à droite de l'étiquette */
MesBoutons.gridy = 2; /* sur la même ligne que l'étiquette */
MesBoutons.gridwidth = GridBagConstraints.REMAINDER; /* il est le dernier composant de sa ligne. */
MesBoutons.gridheight = 1; /* une seule cellule verticalement suffit */
/* Le composant peut s'étendre sur tout l'espace qui lui est attribué horizontalement. */
MesBoutons.fill = GridBagConstraints.HORIZONTAL;
/* Alignons ce composant sur la même ligne d'écriture que son étiquette. */
MesBoutons.anchor = GridBagConstraints.BASELINE;
/* Une petite marge autour du composant. Remarquons que nous n'avons pas spécifié de marge au dessus du
composant. Comme nous avons décidé d'alginé ce composant sur la même ligne que l'étiquette, la marge
du haut sera calculée en interne pour s'aligner correctement avec l'étiquette. */
MesBoutons.insets = new Insets(0, 15, 0, 10);
panel.add(textfield, MesBoutons);
/* Nous pouvons passé aux boutons. */
MesBoutons.gridy = 3; /* nouvelle ligne */
MesBoutons.gridx = 0; /* première colonne, nous allons placé notre bouton "Menu principal" */
/*le bouton est plus large que l'étiquette située au dessus de lui et
* que le champ de saisie commence avant le bord gauche du bouton. Nous précisons donc deux cellules
* horizontalement.
*/
MesBoutons.gridwidth = 2;
MesBoutons.gridheight = 1; /* une seule cellule verticalement suffit */
/* Nous alons aligné les boutons sur leur ligne d'écriture également.*/
MesBoutons.anchor = GridBagConstraints.BASELINE_LEADING;
/* Aucun redimentionnement possible. Le bouton garde toujours soit sa taille minimum soit préférée. */
MesBoutons.fill = GridBagConstraints.NONE;
/* les attributs weightx, weighty sont tout deux a 0.*/
/* Une petite marge autour du composant.*/
MesBoutons.insets = new Insets(10, 15, 10, 10);
panel.add(bouton2, MesBoutons);
/* bouton suivant "Coder" */
/* le bouton précédent peut s'étendre sur deux cellules horizontalement. Celui-ci commence en 2. */
MesBoutons.gridx = 2; /* pour les dubitatifs, gridy vaut toujours 3 ;-) */
MesBoutons.gridwidth = GridBagConstraints.RELATIVE; // le bouton est l'avant dernier composant de sa ligne.
/* nous allons, sur ce bouton, définir un poids pour que celui-ci s'éloigne le plus du bouton précédent.*/
MesBoutons.weightx = 1.;
MesBoutons.anchor = GridBagConstraints.BASELINE_TRAILING; // Pas LINE_END, ni EAST.
MesBoutons.insets = new Insets(0, 0, 0, 220);
panel.add(bouton, MesBoutons);
/* notre dernier bouton. */
MesBoutons.gridx = 3;
MesBoutons.weightx = 0.; /* remettons le poids à zéro. */
MesBoutons.insets = new Insets(0, 3, 0, 10);
panel.add(bouton3, MesBoutons);
/* les 3 boutons sont ajoutés - fin étape 3.*/
return panel;
}
public static void main(String[] args) {
//On crée une nouvelle instance de notre FenetreBoutons
test fenetre = new test();
fenetre.setVisible(true);//On la rend visible
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
}
} |