CCB Premier Import
This commit is contained in:
112
ComboBox/src/Fenetre.java
Normal file
112
ComboBox/src/Fenetre.java
Normal file
@@ -0,0 +1,112 @@
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class Fenetre extends JFrame{
|
||||
private Panneau pan = new Panneau();
|
||||
private JButton bouton = new JButton("Go");
|
||||
private JButton bouton2 = new JButton("Stop");
|
||||
private JPanel container = new JPanel();
|
||||
private JLabel label = new JLabel("Choix de la forme");
|
||||
private int compteur = 0;
|
||||
private boolean animated = true;
|
||||
private boolean backX, backY;
|
||||
private int x, y;
|
||||
private Thread t;
|
||||
private JComboBox combo = new JComboBox();
|
||||
|
||||
public Fenetre(){
|
||||
this.setTitle("Animation");
|
||||
this.setSize(300, 300);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setLocationRelativeTo(null);
|
||||
|
||||
container.setBackground(Color.white);
|
||||
container.setLayout(new BorderLayout());
|
||||
container.add(pan, BorderLayout.CENTER);
|
||||
|
||||
bouton.addActionListener(new BoutonListener());
|
||||
bouton2.addActionListener(new Bouton2Listener());
|
||||
bouton2.setEnabled(false);
|
||||
JPanel south = new JPanel();
|
||||
south.add(bouton);
|
||||
south.add(bouton2);
|
||||
container.add(south, BorderLayout.SOUTH);
|
||||
|
||||
combo.addItem("ROND");
|
||||
combo.addItem("CARRE");
|
||||
combo.addItem("TRIANGLE");
|
||||
combo.addItem("ETOILE");
|
||||
combo.addActionListener(new FormeListener());
|
||||
|
||||
JPanel top = new JPanel();
|
||||
top.add(label);
|
||||
top.add(combo);
|
||||
container.add(top, BorderLayout.NORTH);
|
||||
this.setContentPane(container);
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
private void go(){
|
||||
x = pan.getPosX();
|
||||
y = pan.getPosY();
|
||||
while(this.animated){
|
||||
if(x < 1) backX = false;
|
||||
if(x > pan.getWidth() - 50) backX = true;
|
||||
if(y < 1) backY = false;
|
||||
if(y > pan.getHeight() - 50) backY = true;
|
||||
if(!backX) pan.setPosX(++x);
|
||||
else pan.setPosX(--x);
|
||||
if(!backY) pan.setPosY(++y);
|
||||
else pan.setPosY(--y);
|
||||
pan.repaint();
|
||||
try {
|
||||
Thread.sleep(3);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Classe <20>coutant notre bouton
|
||||
public class BoutonListener implements ActionListener{
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
animated = true;
|
||||
t = new Thread(new PlayAnimation());
|
||||
t.start();
|
||||
bouton.setEnabled(false);
|
||||
bouton2.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
class Bouton2Listener implements ActionListener{
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
animated = false;
|
||||
bouton.setEnabled(true);
|
||||
bouton2.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
class PlayAnimation implements Runnable{
|
||||
public void run() {
|
||||
go();
|
||||
}
|
||||
}
|
||||
|
||||
class FormeListener implements ActionListener{
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
//La m<>thode retourne un Object puisque nous passons des Object dans une liste
|
||||
//Il faut donc utiliser la m<>thode toString() pour retourner un String (ou utiliser un cast)
|
||||
pan.setForme(combo.getSelectedItem().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
90
ComboBox/src/Panneau.java
Normal file
90
ComboBox/src/Panneau.java
Normal file
@@ -0,0 +1,90 @@
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.GradientPaint;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class Panneau extends JPanel {
|
||||
private int posX = -50;
|
||||
private int posY = -50;
|
||||
private String forme = "ROND";
|
||||
|
||||
public void paintComponent(Graphics g){
|
||||
//On choisit une couleur de fond pour le rectangle
|
||||
g.setColor(Color.white);
|
||||
//On le dessine de sorte qu'il occupe toute la surface
|
||||
g.fillRect(0, 0, this.getWidth(), this.getHeight());
|
||||
//On red<65>finit une couleur pour le rond
|
||||
g.setColor(Color.red);
|
||||
//On d<>l<EFBFBD>gue la m<>thode de dessin <20> la m<>thode draw()
|
||||
draw(g);
|
||||
}
|
||||
|
||||
private void draw(Graphics g){
|
||||
if(this.forme.equals("ROND")){
|
||||
g.fillOval(posX, posY, 50, 50);
|
||||
}
|
||||
if(this.forme.equals("CARRE")){
|
||||
g.fillRect(posX, posY, 50, 50);
|
||||
}
|
||||
if(this.forme.equals("TRIANGLE")){
|
||||
//Calcul des sommets
|
||||
//Le sommet 1 se situe <20> la moiti<74> du c<>t<EFBFBD> sup<75>rieur du carr<72>
|
||||
int s1X = posX + 25;
|
||||
int s1Y = posY;
|
||||
//Le sommet 2 se situe en bas <20> droite
|
||||
int s2X = posX + 50;
|
||||
int s2Y = posY + 50;
|
||||
//Le sommet 3 se situe en bas <20> gauche
|
||||
int s3X = posX;
|
||||
int s3Y = posY + 50;
|
||||
//Nous cr<63>ons deux tableaux de coordonn<6E>es
|
||||
int[] ptsX = {s1X, s2X, s3X};
|
||||
int[] ptsY = {s1Y, s2Y, s3Y};
|
||||
//Nous utilisons la m<>thode fillPolygon()
|
||||
g.fillPolygon(ptsX, ptsY, 3);
|
||||
}
|
||||
if(this.forme.equals("ETOILE")){
|
||||
//Pour l'<27>toile, on se contente de tracer des lignes dans le carr<72>
|
||||
//correspondant <20> peu pr<70>s <20> une <20>toile...
|
||||
//Mais ce code peut <20>tre am<61>lior<6F> !
|
||||
int s1X = posX + 25;
|
||||
int s1Y = posY;
|
||||
int s2X = posX + 50;
|
||||
int s2Y = posY + 50;
|
||||
g.drawLine(s1X, s1Y, s2X, s2Y);
|
||||
int s3X = posX;
|
||||
int s3Y = posY + 17;
|
||||
g.drawLine(s2X, s2Y, s3X, s3Y);
|
||||
int s4X = posX + 50;
|
||||
int s4Y = posY + 17;
|
||||
g.drawLine(s3X, s3Y, s4X, s4Y);
|
||||
int s5X = posX;
|
||||
int s5Y = posY + 50;
|
||||
g.drawLine(s4X, s4Y, s5X, s5Y);
|
||||
g.drawLine(s5X, s5Y, s1X, s1Y);
|
||||
}
|
||||
}
|
||||
|
||||
public void setForme(String form){
|
||||
this.forme = form;
|
||||
}
|
||||
|
||||
public int getPosX() {
|
||||
return posX;
|
||||
}
|
||||
|
||||
public void setPosX(int posX) {
|
||||
this.posX = posX;
|
||||
}
|
||||
|
||||
public int getPosY() {
|
||||
return posY;
|
||||
}
|
||||
|
||||
public void setPosY(int posY) {
|
||||
this.posY = posY;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user