1 22 23 package info.monitorenter.gui.chart.demos; 24 25 import info.monitorenter.gui.chart.Chart2D; 26 import info.monitorenter.gui.chart.ITrace2D; 27 import info.monitorenter.gui.chart.layout.ChartPanel; 28 import info.monitorenter.gui.chart.rangepolicies.RangePolicyMinimumViewport; 29 import info.monitorenter.gui.chart.traces.Trace2DLtd; 30 import info.monitorenter.reflection.ObjRecorder2Trace2DAdapter; 31 import info.monitorenter.util.Range; 32 33 import java.awt.BorderLayout ; 34 import java.awt.Color ; 35 import java.awt.Container ; 36 import java.awt.event.WindowAdapter ; 37 import java.awt.event.WindowEvent ; 38 39 import javax.swing.JFrame ; 40 41 42 54 public class RunningChart extends JFrame { 55 63 static class RandomBumper extends Thread { 64 65 protected double m_factor; 66 67 68 protected double m_number = 0; 69 70 71 protected double m_plusminus = 0.5; 72 73 74 protected java.util.Random m_randomizer = new java.util.Random (); 75 76 85 public RandomBumper(final double plusminus, final int factor) { 86 87 if (plusminus < 0 || plusminus > 1) { 88 System.out.println(this.getClass().getName() 89 + " ignores constructor-passed value. Must be between 0.0 and 1.0!"); 90 } else { 91 this.m_plusminus = plusminus; 92 } 93 this.m_factor = factor; 94 this.start(); 95 } 96 97 100 public void run() { 101 102 while (true) { 103 double rand = this.m_randomizer.nextDouble(); 104 if (rand < this.m_plusminus) { 105 this.m_number += this.m_randomizer.nextDouble() * this.m_factor; 106 } else { 107 this.m_number -= this.m_randomizer.nextDouble() * this.m_factor; 108 } 109 110 try { 111 sleep(40); 112 } catch (InterruptedException e) { 113 } 115 116 } 117 } 118 } 119 120 123 private static final long serialVersionUID = 3545231432038627123L; 124 125 132 public static void main(final String [] args) { 133 134 Chart2D chart = new Chart2D(); 135 ITrace2D data = new Trace2DLtd(300); 136 data.setColor(Color.RED); 137 data.setName("random"); 138 data.setPhysicalUnits("hertz", "ms"); 139 chart.addTrace(data); 140 RunningChart wnd = new RunningChart(chart, "RunningChart"); 141 chart.getAxisX().setPaintGrid(true); 142 chart.getAxisY().setPaintGrid(true); 143 144 chart.getAxisX().setPaintScale(true); 145 chart.getAxisX().setPaintScale(true); 146 147 chart.getAxisY().setRangePolicy(new RangePolicyMinimumViewport(new Range(-1e4, +1e4))); 149 wnd.setLocation(200, 300); 151 wnd.setSize(700, 210); 152 wnd.setResizable(true); 153 wnd.setVisible(true); 154 new ObjRecorder2Trace2DAdapter(data, new RandomBumper(0.5, 1000), "m_number", 100); 155 } 156 157 158 protected Chart2D m_chart = null; 159 160 170 public RunningChart(final Chart2D chart, final String label) { 171 172 super(label); 173 this.m_chart = chart; 174 addWindowListener(new WindowAdapter () { 175 176 public void windowClosing(final WindowEvent e) { 177 178 System.exit(0); 179 } 180 }); 181 Container contentPane = getContentPane(); 182 contentPane.setLayout(new BorderLayout ()); 183 contentPane.add(new ChartPanel(this.m_chart), BorderLayout.CENTER); 184 } 185 } 186 | Popular Tags |