Java - Exemple type : Truc

Cet exemple sert à illustrer l'application du MVC à un projet de plusieurs classes.

Enoncé

Le programme sert à créer et de visualiser de petits objets noirs (les trucs). Chaque truc est affiché dans une jList et aussi dessiné sur le canevas.

Un premier bouton sert à ajouter un point noir à un endroit aléatoire du canevas, un 2e bouton sert à initialiser le programme.

Les classes

Truc :


import java.awt.Color;
import java.awt.Graphics;

public class Truc {
    
    private int x;
    private int y;
    
    public Trucint pX, int pY) {
        x=pX;
        y=pY;
    }
    public void draw(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillOval (x-4,y-4,9,9);
    }

    @Override
    public String toString() {
        return "Truc {x=" + x + ", y=" + y + "}";
    }

}

Big :


import java.awt.Graphics;
import java.util.ArrayList;

public class Big {

    private ArrayList<Truc> alTrucs= new ArrayList<Truc>();
    
    public void draw(Graphics g) {
        for (int i=0;i<alTrucs.size();i++ )
            alTrucs.get(i).draw(g);
    }

    public Object[] toArray() {
        return alTrucs.toArray();
    }

    public void clear() {
        alTrucs.clear();
    }

    public boolean add(Truc tr) {
        return alTrucs.add(tr);
    }
}

MainFrame :


public class MainFrame extends javax.swing.JFrame {

    private  Big big = new Big();

    public MainFrame() {
        initComponents();
        drawPanel.setBig(big);
        setTitle("TrucGUI");
    }

    @SuppressWarnings("unchecked")
    ...

    public void updateView() {
        trucList.setListData(big.toArray());
        drawPanel.repaint();
    }

    private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
        Truc tr = new Truc( (int)(Math.random()*drawPanel.getWidth()),
                            (int)(Math.random()*drawPanel.getHeight()) );
        big.add(tr);
        updateView();
    }

    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {
        big.clear();
        updateView();
    }
    ...
}

DrawPanel :


import java.awt.Color;
import java.awt.Graphics;

public class DrawPanel extends javax.swing.JPanel {

    private Big big;

    public DrawPanel() {
        initComponents();
    }
    @Override
    public void paintComponent(Graphics g) {
        int w = getWidth();
        int h = getHeight()
        g.setColor(Color.WHITE);
        g.fillRect(0,0,w,h);
        if (big!=nullbig.draw(g);
    }
    public void setBig(Big pBig) {
        big=pBig;
    }
    ...
}

Exécutable

TrucGUI.jar

Le diagramme UML

TrucGui UML

Copie d'écran du programme

TrucGui ScreenShot


[rrjavatruc]