简体   繁体   English

HTML中的Null异常Java Applet

[英]Null Exception Java Applet In HTML

Hi below is my java applet code. 您好,下面是我的Java Applet代码。 Its working fine as a standalone applet when run as applet. 当作为applet运行时,它可以作为独立applet正常工作。 But when I embed it in the html page, I always get the NULL Exception error. 但是,当我将其嵌入html页面时,总是会收到NULL Exception错误。 I realized that when I take out the image things out, there is no problem displaying in HTML. 我意识到当我取出图像时,以HTML显示没有问题。

Why is it that the image is causing the null exception error? 为什么图像导致空异常错误?

public class SymmetryLine extends JApplet {

DrawingCanvas canvas = new DrawingCanvas();

JSlider slider1, slider2, slider3, slider4, slider5, slider6, slider7, slider8;

JPanel outerBig, top, down;
JLabel moveHorizontal, moveVertical, moveRotate;

  double transX = 0.0;

  double transY = 0.0;

  double rotateTheta = 0.0;

  double rotateX = 150.0;

  double rotateY = 150.0;

  double scaleX = 1.0;

  double scaleY = 1.0;

  float width = 1.0f;

  Image image;

  public SymmetryLine()
  {
      try {
         image = ImageIO.read(new File(getClass().getResource("symmetry.jpg").toURI()));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  }

public void init()
{

    outerBig=new JPanel();
    outerBig.setLayout(new GridLayout(2,1));


    top = new JPanel();
    top.setLayout(new GridLayout(3,2));

    moveHorizontal = new JLabel("Move Right/Left:");
    moveVertical = new JLabel("Move Up/Down:");
    moveRotate = new JLabel("Rotate Line:");

    top.add(moveHorizontal);        
    slider1 = createSlider(top, JSlider.HORIZONTAL, 0, 300, 150, 100, 50);

    top.add(moveVertical);      
    slider2 = createSlider(top, JSlider.HORIZONTAL, 0, 300, 150, 100, 50);

    top.add(moveRotate);    
    slider3 = createSlider(top, JSlider.HORIZONTAL, 0, 360, 0, 90, 45);


    outerBig.add(top);


    outerBig.add(canvas);

    getContentPane().add(outerBig);


}

public JSlider createSlider(JPanel panel, int orientation, int minimumValue, int maximumValue,
          int initValue, int majorTickSpacing, int minorTickSpacing) {
        JSlider slider = new JSlider(orientation, minimumValue, maximumValue, initValue);
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(majorTickSpacing);
        slider.setMinorTickSpacing(minorTickSpacing);
        slider.setPaintLabels(true);
        slider.addChangeListener(new SliderListener());
        panel.add(slider);
        return slider;
      }

class SliderListener implements ChangeListener {
    public void stateChanged(ChangeEvent e) {
      JSlider tempSlider = (JSlider) e.getSource();

      if (tempSlider.equals(slider1)) {
        transX = slider1.getValue() - 150.0;
        System.out.println("transX:" +slider1.getValue());

        canvas.repaint();
      } else if (tempSlider.equals(slider2)) {
        transY = slider2.getValue() - 150.0;
        System.out.println("transY:" + slider2.getValue());

        canvas.repaint();
      } else if (tempSlider.equals(slider3)) {
        rotateTheta = slider3.getValue() * Math.PI / 180;
        canvas.repaint();
      } 
    }
  }

class DrawingCanvas extends Canvas {
    public DrawingCanvas() {
      setSize(300, 300);
    }

    public void paint(Graphics g) {

    super.paint(g); 


      g.drawImage(image, 100, 100, this);


      Graphics2D g2D = (Graphics2D) g;

      g2D.translate(transX, transY);
      g2D.rotate(rotateTheta, rotateX, rotateY);
      g2D.scale(scaleX, scaleY);
      BasicStroke stroke = new BasicStroke(width);
      g2D.setStroke(stroke);
      Line2D line1 = new Line2D.Float(0f, 200f, 800f, 200f);
      g2D.draw(line1);



    }
  }

public Image getImage() throws IOException, URISyntaxException
{
    BufferedImage image = ImageIO.read(new File(getClass().getResource("symmetry.jpg").toURI()));

    return image;
}
}
image = ImageIO.read(new File(getClass().getResource("symmetry.jpg").toURI())); 

Should be 应该

image = ImageIO.read(getClass().getResource("symmetry.jpg"));

ImageIO.read(..) is overloaded to accept ImageInputStream , InputStream , File or URL . ImageIO.read(..)已重载以接受ImageInputStreamInputStreamFileURL Since some URLs cannot be formed into a valid File , stick with using the URL . 由于某些URL无法形成有效的File ,因此请坚持使用URL

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM