TD 9 - Notions générales graphiques

Exercice 1: Création de notre première interface graphique

import javax.swing.*;
import java.awt.event.*;
public class Class1 {
    JFrame jf;
    JButton jb;
    public static void main( String[] args){
       new Class1();
   }
   Class1(){
       jf = new JFrame("Test");
       /*entete*/
        JLabel jl = new JLabel("TEST GUI",JLabel.CENTER);
        /* bouton */
        jb=new JButton("Au revoir");
        jf.getContentPane().add(jl);
        jf.getContentPane().add(jb);
        jf.setSize(320,200);
        jf.show();
    }
}

Résultat : on ne voit que le bouton qui prend 100% de l'espace. En effet, le panneau n'a pas de gestionnaire de placement.



Exercice 2 : Mise en place d'une mise en page

import javax.swing.*;
import java.awt.event.*;
public class Class2 {
   JFrame jf;
   JButton jb;
    public static void main( String[] args){
      new Class2();
   }
   Class2(){
        jf= new JFrame("Test");

       /*entete*/
        JPanel jpTitre=new JPanel();
        JLabel jlTitre = new JLabel("TEST GUI",JLabel.CENTER);
        jpTitre.add(jlTitre);
        /* bouton */
        JPanel jpBouton=new JPanel();
        jb=new JButton("Au revoir");
        jpBouton.add(jb);
        jf.getContentPane().setLayout(new BoxLayout(jf.getContentPane(), BoxLayout.Y_AXIS));
        jf.getContentPane().add(jpTitre);
        jf.getContentPane().add(jpBouton);
        jf.setSize(320,200);
        jf.show();
    }
}

Exercice 3 : Ajout des listeners

Avec un listener pour la sortie:

import javax.swing.*;
import java.awt.event.*; /* listener */
import java.awt.*;
public class Class4 extends JFrame implements ActionListener{
    public Class4(){
        /*entete*/
        JPanel jpTitre=new JPanel();
        JLabel jlTitre = new JLabel("TEST GUI",JLabel.CENTER);
        jpTitre.add(jlTitre);
        /* bouton */
        JButton jb;
        JPanel jpBouton=new JPanel();
        jb=new JButton("Au revoir");
        jb.addActionListener(this);
        jpBouton.add(jb);
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        getContentPane().add(jpTitre);
        getContentPane().add(jpBouton);
    }
    public static void main( String[] args) {
        Class4 c4 = new Class4();
        c4.setSize(320,200);
        c4.show();
    }
    public void actionPerformed(ActionEvent e) {
        System.exit(0);
    }
}

Avec la JComboBox:

import javax.swing.*;
import java.awt.event.*; /* listener */
import java.awt.*;
import java.util.*;
public class Class4 extends JFrame implements ActionListener,ItemListener{
    JPanel jpTitre;
    JLabel jlTitre;
    JButton jb;
    JPanel jpBouton;
    JPanel jpCombo;
    JComboBox jcb;
    JLabel jlChoix;
    public Class4(){
        /*entete*/
        jpTitre=new JPanel();
        jlTitre = new JLabel("TEST GUI",JLabel.CENTER);
        jpTitre.add(jlTitre);
        /* bouton */
        jpBouton=new JPanel();
        jb=new JButton("Au revoir");
        jb.addActionListener(this);
        jpBouton.add(jb);
        jpCombo=new JPanel();
        Vector v=new Vector();
        v.addElement("choix a");
        v.addElement("choix b");
        v.addElement("choix c");
        jcb=new JComboBox(v);
        jcb.addItemListener(this);
        jlChoix=new JLabel();
        jpCombo.setLayout(new BoxLayout(jpCombo,BoxLayout.X_AXIS));
        jpCombo.add(jcb);
        jpCombo.add(jlChoix);
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        getContentPane().add(jpTitre);
        getContentPane().add(jpBouton);
        getContentPane().add(jpCombo);
    }
    public static void main( String[] args) {
        Class4 c4 = new Class4();
        c4.setSize(320,200);
        c4.show();
    }
    public void actionPerformed(ActionEvent ae) {
        System.exit(0);
    }
    public void itemStateChanged(ItemEvent ie) {
        jlChoix.setText(jcb.getSelectedItem().toString());
    }
}