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 Truc( int 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!=null) big.draw(g);
}
public void setBig(Big pBig) {
big=pBig;
}
...
}
|
Exécutable
TrucGUI.jar
Le diagramme UML
Copie d'écran du programme