/* * MODIFS PYL oct 2005!!!!!!!!!! * www.lmm.jussieu.fr/~lagree + py@cccr.jussieu.fr * * This software is designed and intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear facility. */ //javac guiguyd2.java ;java guiguyd2 //javac guiguyd2.java ; open index.html import java.awt.*; import java.applet.Applet; import java.awt.event.*; import javax.swing.*; class GraphPanel extends Panel implements Runnable { guiguyd2 graph; int x=150,y=10,v=0; Thread relaxer; //thread public GraphPanel (){} GraphPanel(guiguyd2 graph) { this.graph = graph; } public void run() { //lancement Thread me = Thread.currentThread(); while (relaxer == me) { repaint(); //repaint try { Thread.sleep(20); //temps de latence } catch (InterruptedException e) { break; } } } Image offscreen; Dimension offscreensize; Graphics offgraphics; public synchronized void update(Graphics g) { Dimension d = getSize(); offscreen = createImage(d.width, d.height); offscreensize = d; offgraphics = offscreen.getGraphics(); //efface le graphique offgraphics.setColor(getBackground()); offgraphics.fillRect(0, 0, d.width, d.height); offgraphics.setColor(Color.black) ; v++; y=y+v; if (y>d.height*9/10){v=-v;y=d.height*9/10;} x=x-(x/d.width)*d.width; if(x<0)x=x+d.width; offgraphics.fillRect(x, y, 10, 10); g.drawImage(offscreen, 0, 0, null); } public void start() { //lance le thread relaxer = new Thread(this); relaxer.start(); } } public class guiguyd2 extends Applet implements ActionListener { GraphPanel panel; //definition du panneau graphique Panel controlPanel; //definition du panneau JButton moins = new JButton("Moinche"); //definition du Bouton JButton plus = new JButton("Plouche"); //definition du Bouton public void init() { //initialisation setLayout(new BorderLayout()); //plusieurs panneaux panel = new GraphPanel(this); //creation du panneau graphique add("Center", panel); //position controlPanel = new Panel(); //creation du panneau add("South", controlPanel); //position controlPanel.add(moins); //definition du Bouton moins.addActionListener(this); //surveiller le bouton controlPanel.add(plus); //definition du Bouton plus.addActionListener(this); //surveiller le bouton } public void start() { panel.start(); } public void actionPerformed(ActionEvent e) { Object src = e.getSource(); //quelle action if (src == moins) { panel.x=panel.x-10; //x decremente return; } if (src == plus) { panel.x=panel.x+10; //x augmente return; } } /////////////////////////////////////////////////////////// public static void main(String args[]) { JFrame f = new JFrame("guiguy par PYL"); guiguyd2 guiguy = new guiguyd2(); guiguy.init(); guiguy.start(); f.getContentPane().add(guiguy); f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE ) ; f.setSize(300,300); f.setLocation(10, 10); f.show(); } }