import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.ImageIcon; public class Speedo extends JFrame { int i = 0; int a; int b; int c; int v; double fuel=0.0; Timer t; Timer BrakeT; Timer decelT; boolean ticking = false; boolean BTicking = false; String speeding = ("WARNING ! EXCESSIVE SPEEDING IS DANGEROUS"); String limit = ("WARNING ! EXCEEDING THE SPEED LIMIT IS ILLEGAL!"); ImageIcon[] img = new ImageIcon[10]; ImageIcon pt = new ImageIcon("small-Point.jpg"); JPanel Content = new JPanel(); JTextField jtfFuel = new JTextField (5); JButton jbnSetFuel = new JButton ("Set Fuel"); JButton jbnGas = new JButton ("GAS"); JButton jbnBrake = new JButton ("BRAKE"); ImageIcon img0 = new ImageIcon ("0.jpg"); ImageIcon imgS0 = new ImageIcon ("small-0.jpg"); JLabel jlbDisplay = new JLabel (img0); JLabel jlbDisplay2 = new JLabel (img0); JLabel jlbDisplay3 = new JLabel (img0); JLabel jlbF = new JLabel ("Fuel (L)"); JLabel jlbMessage = new JLabel (); JLabel jlbPoint = new JLabel (pt); JLabel jlbFuel1 = new JLabel (imgS0); JLabel jlbFuel2 = new JLabel (imgS0); JLabel jlbFuel3 = new JLabel (imgS0); public Speedo() { this.setContentPane(Content); Content.setLayout(new BoxLayout(Content,BoxLayout.Y_AXIS)); for (int i = 0; i < 10; i++) { img[i] = new ImageIcon (i + ".jpg"); } t = new Timer(200, new ActionListener() { public void actionPerformed(ActionEvent e) { v=i; c = v % 10; jlbDisplay3.setIcon(img[c]); v = v / 10; b = v % 10; jlbDisplay2.setIcon(img[b]); v = v / 10; a = v % 10; jlbDisplay.setIcon(img[a]); i=i+2; if(i>=160) { i=160; } if(i >= 80) { jlbMessage.setText(speeding); } repaint(); }//end actionPerformed TIMER! });//end timer BrakeT = new Timer(200, new ActionListener() { public void actionPerformed(ActionEvent e) { i=i-3; if (i<=0) { i=0; } if (i <= 80) { jlbMessage.setText(" "); } v=i; c = v % 10; jlbDisplay3.setIcon(img[c]); v = v / 10; b = v % 10; jlbDisplay2.setIcon(img[b]); v = v / 10; a = v % 10; jlbDisplay.setIcon(img[a]); }//end actionPerformed TIMER! });//end timer decelT = new Timer(200, new ActionListener() { public void actionPerformed(ActionEvent e) { i=i-1; if (i<=0) { i=0; } if (i <= 80) { jlbMessage.setText(" "); } v=i; c = v % 10; jlbDisplay3.setIcon(img[c]); v = v / 10; b = v % 10; jlbDisplay2.setIcon(img[b]); v = v / 10; a = v % 10; jlbDisplay.setIcon(img[a]); }//end actionPerformed TIMER! });//end timer //declare panels JPanel fuel = new JPanel(); JPanel p = new JPanel(); JPanel button = new JPanel(); //button panel button.add(jbnGas); button.add(jbnBrake); Content.add(button); //Speed panel p.add(jlbDisplay); p.add(jlbDisplay2); p.add(jlbDisplay3); jlbMessage.setForeground(Color.red); p.add(jlbMessage); Content.add(p); //fuel jFrame fuel.add (jlbFuel1); fuel.add(jlbFuel2); fuel.add(jlbPoint); fuel.add(jlbFuel3); fuel.add(jlbF); fuel.add(jtfFuel); fuel.add(jbnSetFuel); Content.add(fuel); //mouse listeners jbnGas.addMouseListener(new jbnGasAction() ); jbnBrake.addMouseListener(new jbnBrakeAction() ); // button listener jbnSetFuel.addActionListener(new jbnSetFuel() ); } class jbnSetFuel implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==jbnSetFuel) { fuel = Double.parseDouble(jtfFuel.getText()); } } }//end setfuel class jbnGasAction implements MouseListener //the class for the accell timer and mouse listener { public void mousePressed(MouseEvent e) { ticking = true; t.start(); decelT.stop(); } public void mouseReleased(MouseEvent e) { ticking = false; t.stop(); decelT.start(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} } class jbnBrakeAction implements MouseListener { public void mousePressed(MouseEvent e) { BTicking = true; BrakeT.start(); decelT.stop(); } public void mouseReleased(MouseEvent e) { BTicking = false; BrakeT.stop(); decelT.start();//when no buttons are pressed the decel timer starts and slowly decels the speed (i) } public void mouseClicked(MouseEvent e){}//mouse clicked, mouse entereed & mouse exited are unused so left blank public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} } public static void main (String args[]) { Speedo d = new Speedo(); d.setTitle("SPEEDOMETER"); d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); d.setLocation(250,250); d.setSize(450,450); d.setVisible(true); d.setResizable(false); }//end main }