/* * @(#)Graph.java 1.9 99/08/04 * MODIFS PYL juillet Aout 2005!!!!!!!!!! * * This software is not designed or 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 guiChalOmega.java Kul.java ;java guiChalOmega //javac guiChalOmega.java Kul.java; open index.html import java.util.*; import java.awt.*; import java.applet.Applet; import java.awt.event.*; import javax.swing.*; import java.io.*; class GraphPanel extends Panel implements Runnable, MouseListener { guiChalOmega graph; Kul kkul=new Kul(); public double dt0; public double getdt0(){ return dt0;} Thread relaxer; public GraphPanel (){ } GraphPanel(guiChalOmega graph) { this.graph = graph; addMouseListener(this); } void initout() { razz(); dt0=0.0003; System.out.println("init t=" + kkul.t +" ....................... dt =" +dt0); } void razz(){ kkul=null; kkul=new Kul(); kkul.t=0; kkul.n=50; kkul.dx=.02; kkul.omega=0; kkul.prems(); kkul.cl00(); System.out.println("Init" ); } public void sauveparam() { String texte = "#OK a poursuivre!"; System.out.println("sauf" ); try{ FileOutputStream filename= new FileOutputStream("xy.dat"); PrintStream ffile = new PrintStream(filename); for (int i = 0; i <= kkul.n; i++) { ffile.println(i*kkul.dx + " " + kkul.T[i]);} } catch (IOException Ex) {System.out.println(Ex.getMessage());} } public void run() { Thread me = Thread.currentThread(); while (relaxer == me) { relax(); try { Thread.sleep(200); } catch (InterruptedException e) { break; } } } synchronized void relax() { repaint(); } Image offscreen; Dimension offscreensize; Graphics offgraphics; public synchronized void update(Graphics g) { Dimension d = getSize(); if ((offscreen == null) || (d.width != offscreensize.width) || (d.height != offscreensize.height)) { offscreen = createImage(d.width, d.height); offscreensize = d; if (offgraphics != null) { offgraphics.dispose(); } offgraphics = offscreen.getGraphics(); offgraphics.setFont(getFont()); } offgraphics.setColor(getBackground()); offgraphics.fillRect(0, 0, d.width, d.height); System.out.println("t=" + kkul.t); offgraphics.setColor(Color.black) ; offgraphics.drawLine(d.width/4, d.height*8/10,(3*d.width)/4 , d.height*8/10); offgraphics.drawLine(d.width/4, d.height*8/10,d.width/4 , d.height*3/10); offgraphics.drawLine((3*d.width)/4, d.height*8/10,(3*d.width)/4 , d.height*3/10); offgraphics.drawLine(d.width/4, d.height*3/10,(3*d.width)/4, d.height*3/10); offgraphics.drawString("x " , 4*d.width/5, d.height*8/10); offgraphics.drawString("T(x,t="+(((int)(kkul.t*1000))/1000.)+")", d.width/2, d.height/8); offgraphics.setColor(Color.red) ; for (int i = 1 ; i <= kkul.n ; i++) { offgraphics.drawLine(d.width/4+(i-1)*d.width/kkul.n/2, d.height*8/10-(int)(d.height*kkul.T[i-1]/2), d.width/4+ i* d.width/kkul.n/2, d.height*8/10-(int)(d.height*kkul.T[ i ]/2)); } g.drawImage(offscreen, 0, 0, null); } //1.1 event handling public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void start() { relaxer = new Thread(this); relaxer.start(); } public void stop() { relaxer = null; } } public class guiChalOmega extends Applet implements ActionListener, ItemListener { GraphPanel panel; Panel controlPanel; Button raz = new Button("RAZ"); Button calcul = new Button("Calcul"); Button pause = new Button("Pause"); JLabel lab = new JLabel("val = ", JLabel.CENTER) ; JTextField saizie= new JTextField ("0.000100"); Choice choix = new Choice(); JLabel labo = new JLabel("omega = ", JLabel.CENTER) ; JTextField saizio= new JTextField ("0.000"); public void init() { setLayout(new BorderLayout()); panel = new GraphPanel(this); add("Center", panel); controlPanel = new Panel(); add("South", controlPanel); controlPanel.add(lab) ; lab.setText("dt=") ; controlPanel.add(saizie); controlPanel.add(labo) ; labo.setText("omega=") ; controlPanel.add(saizio); controlPanel.add(raz); raz.addActionListener(this); controlPanel.add(calcul); calcul.addActionListener(this); controlPanel.add(pause); pause.addActionListener(this); controlPanel.add(new Label("Cond. lim. :", Label.RIGHT)); choix.addItemListener(this); controlPanel.add(choix); choix.addItem("T(0)=0, T(1)=0 " ); choix.addItem("T(0)=0, T(1)=1 " ); choix.addItem("T(0)=1, T(1)=0 " ); choix.addItem("T(0)=1, T(1)=1 " ); choix.addItem("T(0)=sin(omega t), T(1)=0" ); choix.addItem("T(0)=0, T'(1)=q " ); panel.initout(); } public void destroy() { remove(panel); remove(controlPanel); } public void start() { razz(); panel.start(); } public double getdt0(){ return panel.getdt0(); } public void stop() { panel.stop(); } public void razz() { panel.razz(); } public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if (src == raz) { razz(); System.out.println("RAZ, t=" + panel.kkul.t); return; } if (src == calcul) { String ch=saizie.getText(); double z =Double.parseDouble(ch); // lu.setText(ch); System.out.println(ch); System.out.println("calcul, t=" + panel.kkul.t + "dt =" + z ); panel.kkul.dt=z; ch=saizio.getText(); z =Double.parseDouble(ch); System.out.println("calcul, omega=" + z ); panel.kkul.omega=z; if(panel.kkul.cours==0){ panel.kkul.start(); panel.kkul.cours=1;} return; } if (src == pause) { System.out.println("stop, t=" + panel.kkul.t); panel.kkul.dt=0; panel.sauveparam(); } } public void itemStateChanged(ItemEvent e) { //Object src = e.getSource(); //boolean on = e.getStateChange() == ItemEvent.SELECTED; int ined=choix.getSelectedIndex(); if (ined==0){System.out.println("arx CL0\n");panel.kkul.cl00();} if (ined==1){System.out.println("arx CL1\n");panel.kkul.cl01();} if (ined==2){System.out.println("arx CL2\n");panel.kkul.cl10();} if (ined==3){System.out.println("arx CL2\n");panel.kkul.cl11();} if (ined==4){System.out.println("arx CL3\n");panel.kkul.clt0();} /*if (src == truc) panel.truc = on; else if (src == machin) panel.machin = on; if(panel.machin){panel.kkul.T1=1; }else{panel.kkul.T1=0; }; if(panel.truc) {panel.kkul.T0=1; }else{panel.kkul.T0=0; };*/ } /////////////////////////////////////////////////////////// public static void main(String args[]) { Frame f = new Frame("guiChalOmega"); guiChalOmega guiChalOmega = new guiChalOmega(); //System.out.println(args[]); guiChalOmega.init(); guiChalOmega.start(); f.add("Center", guiChalOmega); f.setSize(800, 400); f.setLocation(200, 200); f.show(); } public String getAppletInfo() { return "Calcul interactif par PYL. \n 'java guiGraph' \nou applet."; } }