import javax.swing.*; import java.awt.*; /* * Classe principale contenant le main() * J'ai pour habitude (je dis bien JE) de créer pour n'importe quelle appli une classe * MonAppli extends JFrame contenant le main(). Ce dernier est quasiment toujours le * même (voir aprés), les opération s'effectuant dans le constructeur. */ public class MyFrame extends JFrame { /* * private : seule cette classe est autorisée à utilisé la variable ou fonction. * En règle générale et par convention, les attributs d'une classe sont private * et des accesseurs publics (get et set) sont définis pour le modifier depuis * d'autres classes. * * Exemple : * private int nombre; * (...) * public int getNombre() { return nombre;} * public void setNombre(int nombre) { this.nombre = nombre;} * * L'utilité ? Permettre un contrôle sur l'affectation. * Exemple (si le nombre est négatif, il est égal à 0): * public void setNombre(int nombre) { * if(nombre<0) this.nombre = 0; * else this.nombre = nombre; * } * * Note : GET et SET ne sont pas toujours nécessaires (Ex: composants graphiques) */ private JTabbedPane onglets; private PanelServices onglet1; // Qui n'est pas le meilleur des noms... private PanelStart buttons; public MyFrame() { // Appel au constructeur hérité. Toujours en 1ère ligne. super("Classification test"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,200); // Création du TabbedPane onglets = new JTabbedPane(); // "SwingConstants.TOP" inutile car par défaut. // Onglet services onglet1 = new PanelServices(); onglet1.setPreferredSize(new Dimension(300,80)); /* * Note concernant les setSize() et setPreferredSize() : * Mieux vaut travailler avec les Layout plutot que de définir les dimensions. * C'est laborieux et à n'utiliser que pour "paufiner" (ce que les Layouts * n'auront pas fait) */ // On ajoute l'onglet, OK onglets.addTab("Services",onglet1); // Panel de boutons /* * Attention ! Un problème que je n'ai pas résolu qui peut se révéler génant * par la suite : les boutons sont attribués nominativement à l'onglet1, ce * qui signifie que tu pourrais rencontrer des difficultés pour l'attribuer * aux autres onglets. * Solution envigeasable (il y en a d'autres) : * Détecter l'onglet courant dans l'ActionPerformed. */ buttons = new PanelStart(onglet1); /* * ? Je ne m'y suis pas attarder. Regarde sur dvp.com le tuto sur les layouts * ("Positionner les composants") */ buttons.setLayout(new BoxLayout(buttons,BoxLayout.Y_AXIS)); // Ajout des composants. OK getContentPane().add(BorderLayout.WEST,onglets); getContentPane().add(BorderLayout.EAST,buttons); } // Doit rester "légère" en générale. public static void main(String[] args) { MyFrame frame = new MyFrame(); frame.setVisible(true); } }