title: # java how to insert images in a canvas
body: <p>i am developing a car simulation in java. my coding is as below. I want to put a panel and in it to be the line rotating together with a speedometer image of 180 degrees. My question is how do i do this?</p>
  
  <pre><code> public class House extends JPanel implements ActionListener
      {
      MyCanvas canvas;
      JButton mybutton,mybutton1,mybutton2,mybutton3,mybutton4,mybutton5;
      JTextField text1,text2,text3;
      JSlider sliderTransX, sliderTransY, sliderRotateTheta, sliderRotateX,
        sliderRotateY, sliderScaleX, sliderScaleY, sliderWidth;
      `enter code here`int k = 0;
  
    double transX = 0.0;
    double transY = 0.0;
    double rotateTheta = 0.0;
    double rotateX = 345.0;
    double rotateY = 250.0;
    double scaleX = 1.0;
    double scaleY = 1.0;
    float width = 1.0f;
    Cargame game = new Cargame();
  
    public House() 
    {
      super(new BorderLayout());
      JPanel controlPanel = new JPanel(new GridLayout(3, 3));
      add(controlPanel, BorderLayout.NORTH);
      sliderRotateTheta = setSlider(controlPanel, JSlider.HORIZONTAL, 0, 180,
          0, 90, 45);
      mybutton = new JButton("Accelerate");
      mybutton.addActionListener(this);
      mybutton1 = new JButton("ShiftUp");
      mybutton1.addActionListener(this);
      mybutton2 = new JButton("ShiftDown");
      mybutton2.addActionListener(this);
      mybutton3 = new JButton("Deaccelerate");
      mybutton3.addActionListener(this);
      mybutton4 = new JButton("Start Engine");
      mybutton4.addActionListener(this);
      mybutton5 = new JButton("Stop Engine");
      mybutton5.addActionListener(this);
      text1=new JTextField(5);
      text2=new JTextField(5);
      text3=new JTextField(5);
  
      sliderWidth = new JSlider(JSlider.HORIZONTAL, 0, 20, 1);
      sliderWidth.addChangeListener(new ChangeListener()
      {
        public void stateChanged(ChangeEvent e) {
  
          width = sliderWidth.getValue();
          canvas.repaint();
        }
      });
  
     JPanel widthPanel = new JPanel();
    widthPanel.setLayout(new GridLayout(3, 3));
      widthPanel.add(mybutton);
      widthPanel.add(mybutton1);
      widthPanel.add(mybutton2);
      widthPanel.add(mybutton3);
      widthPanel.add(mybutton4);
      widthPanel.add(mybutton5);
      widthPanel.add(text1);
      widthPanel.add(text2);
      widthPanel.add(text3);
      add(widthPanel, BorderLayout.SOUTH);
  
      canvas = new MyCanvas();
      add(canvas, "Center");
    }
  
    public void actionPerformed(ActionEvent e)
      {
        if (e.getSource() == mybutton)
        {
            game.Accelerate();
        }
        if (e.getSource() == mybutton1)
        {
            game.ShiftUp();
        }
         if (e.getSource() == mybutton2)
        {
            game.ShiftDown();
        }
          if (e.getSource() == mybutton3)
        {
            game.Deaccelerate();
        }
  
          JSlider tempSlider=new JSlider();
          rotateTheta= ((double)game.getLevel()) * Math.PI / 180;
          text1.setText(String.valueOf(game.getLevel()));
           text2.setText(String.valueOf(game.getGear()));
           text3.setText(String.valueOf(game.Speedometer()));
          canvas.repaint();
      }
  
  
    public JSlider setSlider(JPanel panel, int orientation, int minimumValue,
        int maximumValue, int initValue, int majorTickSpacing,
        int minorTickSpacing) {
      JSlider slider = new JSlider(orientation, minimumValue, maximumValue,
          initValue);
  
      slider.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
          JSlider tempSlider = (JSlider) e.getSource();
  sliderRotateTheta.setValue(k);
         if(tempSlider.equals(sliderRotateTheta))
         {
            rotateTheta = sliderRotateTheta.getValue() * Math.PI / 180;
  
            canvas.repaint();
  
            }}
  
      });
      slider.setVisible(false);
      panel.add(slider);
      return slider;
    }
  
    class MyCanvas extends Canvas {      
      public void paint(Graphics g) {
        Graphics2D g2D = (Graphics2D) g;
        g2D.rotate(rotateTheta, rotateX, rotateY);
  
        BasicStroke stroke = new BasicStroke(width);
        g2D.setStroke(stroke);
  
        drawHome(g2D);
      }
  
      public void drawHome(Graphics2D g2D) {
        Line2D line7 = new Line2D.Float(205f, 250f, 345f, 250f);
        g2D.draw(line7);
      }
    }
  
    public static void main(String[] a) {
      JFrame f = new JFrame();
      f.getContentPane().add(new House());
      f.setDefaultCloseOperation(1);
      f.setSize(700, 550);
      f.setVisible(true);
    }
  
  }
  </code></pre>