View Single Post
  #2 (permalink)  
Old 04-25-2008, 07:52 PM
hardwired hardwired is offline
Senior Member
 
Join Date: Jul 2007
Posts: 1,017
hardwired is on a distinguished road
Code:
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.util.Random; import javax.swing.*; public class HiBars implements Runnable { HiBarPanel hiBarPanel = new HiBarPanel(); Random seed = new Random(); int DATA_MAX = 100; long delay = 20*1000; public HiBars() { Thread thread = new Thread(this); thread.setPriority(Thread.NORM_PRIORITY); thread.start(); } public void run() { while(true) { hiBarPanel.setData(getData(), DATA_MAX); try { Thread.sleep(delay); } catch(InterruptedException e) { break; } } } private int[] getData() { int[] data = new int[4]; for(int i = 0; i < data.length; i++) { data[i] = seed.nextInt(DATA_MAX+1); } return data; } private JPanel getContent() { return hiBarPanel; } public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new HiBars().getContent()); f.setSize(400,400); f.setLocation(200,200); f.setVisible(true); } } class HiBarPanel extends JPanel { int[] data; int maxValue = 10; final int PAD = 20; public void setData(int[] data, int maxValue) { this.data = data; this.maxValue = maxValue; System.out.printf("data = %s%n", java.util.Arrays.toString(data)); repaint(); } protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); int w = getWidth(); int h = getHeight(); // Draw ordinate. g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD)); // Draw abcissa. g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD)); double xInc = (double)(w - 2*PAD)/data.length; double scale = (double)(h - 2*PAD)/maxValue; Path2D.Double path = new Path2D.Double(); // Draw data. double x = PAD; double y = h - PAD; path.moveTo(x, y); for(int i = 0; i < data.length; i++) { x = PAD + i*xInc; y = h - PAD - scale*data[i]; path.lineTo(x, y); path.lineTo(x+xInc, y); } path.lineTo(x+xInc, h-PAD); g2.setPaint(new Color(220,220,210)); g2.fill(path); g2.setPaint(Color.blue); g2.draw(path); } }
Reply With Quote