import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.text.DecimalFormat; public class HUD extends JFrame { DecimalFormat kmSpeed = new DecimalFormat("0.00 Km/h"); DecimalFormat kmTravelled = new DecimalFormat("0.00 Km"); String formattedDistance=""; int speed = 0; String number = "000"; double distance = 0; JPanel mainPanel = new JPanel(); JPanel sidePanel = new JPanel(new GridLayout(3,2)); JPanel displayPanel = new JPanel(new FlowLayout()); JTextField speedOutput = new JTextField(10); JTextField distanceOutput = new JTextField(10); JButton accelerate = new JButton("Accelerate"); JButton brake = new JButton("brake"); Timer t; Timer f; boolean accelerating=false; public HUD() { this.setContentPane(mainPanel); mainPanel.add(displayPanel); mainPanel.add(sidePanel); mainPanel.add(speedOutput); mainPanel.add(distanceOutput); sidePanel.add(accelerate); sidePanel.add(brake); updateDistance(); pack(); accelerate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(accelerating==true) { t.restart(); accelerating = false; updateDistance(); } else{ t.restart(); accelerating = true; updateDistance(); } } } ); brake.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(accelerating==true) { t.restart(); accelerating = false; updateDistance(); } else{ t.restart(); accelerating = true; updateDistance(); } } } ); t = new Timer(100, new ActionListener() { public void actionPerformed(ActionEvent e) { if(accelerating==true) { speed = speed + 1; updateDistance(); while(speed>160) { speed--; speed--; speed--; updateDistance(); } } else{ speed--; speed--; speed--; updateDistance(); } while(speed<-1) { speed++; } speed++; speedOutput.setText(kmSpeed.format(speed)); updateDistance(); } } ); } public void updateDistance() { distance = distance + speed/36000; formattedDistance = kmTravelled.format(distance); distanceOutput.setText(formattedDistance); displayPanel.removeAll(); number=(""+speed); for(int i=0;i