簡體   English   中英

HTML中的Null異常Java Applet

[英]Null Exception Java Applet In HTML

您好,下面是我的Java Applet代碼。 當作為applet運行時,它可以作為獨立applet正常工作。 但是,當我將其嵌入html頁面時,總是會收到NULL Exception錯誤。 我意識到當我取出圖像時,以HTML顯示沒有問題。

為什么圖像導致空異常錯誤?

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())); 

應該

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

ImageIO.read(..)已重載以接受ImageInputStreamInputStreamFileURL 由於某些URL無法形成有效的File ,因此請堅持使用URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM