// Se utilizeaza clasa vxvoltm4 pentru a afisa un voltmetru virtual // De fiecare data, se reafiseaza imaginea de fundal // Imaginea de fundal fiind creata o singura data // Nu mai este necesara stergerea vechii trasari package Vx_voltmetru; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.GridBagLayout; import javax.swing.JPanel; import javax.swing.JApplet; import javax.swing.Timer; import java.util.Random; public class vx_voltm_v4 extends JApplet { private static final long serialVersionUID = 1L; private JPanel c_panel_1 = null; // panel_1 cu controale plasate private JPanel panel_1 = null; // panoul 1 private vxvoltm4 vxvoltm_4; private Random rand; // obiectul random private double vr; private int delay=500; // temporizare private Timer timer_1=null; // timer 1 /** * Constructorul implicit */ public vx_voltm_v4() { super(); } /** * Aceasta metoda initializeaza: this * * @returneaza void */ public void init() { this.setSize(400,300); this.setContentPane(init_panel_1()); } /** * Aceasta metoda creaza "timer_1" * nu returneaza nimic */ private void creaza_timer_1() { if (timer_1 == null) { timer_1 = new Timer(delay, null); //timer_1.setInitialDelay(delay *1); // Temporizare initiala timer_1.setCoalesce(true); timer_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { vxvoltm_4.afis_im(); vr=rand.nextDouble()*250.0; vxvoltm_4.set_val(vr); } }); } } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel creaza_panel_1() { if (panel_1 == null) { panel_1 = new JPanel(); panel_1.setLayout(new GridBagLayout()); panel_1.setBounds(new Rectangle(10, 10, 350, 150)); } return panel_1; } /** * Aceasta metoda initializeaza panel_1 plasand controalele dorite * Returneaza c_panel_1 de tipul: javax.swing.JPanel */ private JPanel init_panel_1() { if (c_panel_1 == null) { c_panel_1 = new JPanel(); c_panel_1.setLayout(null); rand= new Random(); // se plaseaza un voltmetru la pozitia x1,y1,w,h,val,val_max vxvoltm_4 = new vxvoltm4(60,10,275,250,0,250.0,this); vxvoltm_4.cr_im(); vxvoltm_4.afis_im(); c_panel_1.add(creaza_panel_1(), null); c_panel_1.setLayout(new BorderLayout()); creaza_timer_1(); timer_1.start(); } return c_panel_1; } } class vxvoltm4 { private int x1,y1,w,h; double val,val_max; private vx_voltm_v4 frm; private Graphics desen = null; private Graphics im_voltm = null; private Image img = null; vxvoltm4(int x1,int y1,int w, int h, double val, double val_max, vx_voltm_v4 frm) { this.x1 = x1; this.y1 = y1; this.w = w; this.h = h; this.val_max = val_max; this.val = val; this.frm = frm; } public void cr_im(){ if (img==null){ img = frm.createImage(w,h); } if (im_voltm==null){ im_voltm=img.getGraphics(); } im_voltm.setColor(Color.blue); im_voltm.drawRect(2, 2, w-6, h-6); im_voltm.setColor(Color.red); im_voltm.drawRect(4, 4, w-10, h-10); for(int i=15; i< w-10; i+=5){ im_voltm.drawLine(i, (int) w/4, i, (int) h/4-7); } if (desen==null){ desen = frm.getGraphics(); } } public void afis_im() { if (desen==null){ desen = frm.getGraphics(); } desen.drawImage(img, x1, y1, w, h, frm); } public void set_val(double val) { if (desen==null){ desen = frm.getGraphics(); } desen.setColor(Color.RED); desen.drawString(Integer.toString((int)val), x1+w-40, y1+h-15); desen.drawLine((int)(x1+(w/val_max)*val) ,y1+50, (int)(x1+w/2), y1+h-30); } } |
|