【发布时间】:2014-02-01 04:48:17
【问题描述】:
您好,下面是我的 java 小程序代码。当作为小程序运行时,它作为一个独立的小程序运行良好。但是当我将它嵌入到 html 页面中时,我总是得到 NULL Exception 错误。我发现当我把图片的东西拿出来的时候,在 HTML 中显示是没有问题的。
为什么是图片导致null异常错误?
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;
}
}
【问题讨论】:
-
能否请您也提供堆栈跟踪。
-
@AnkitZalani 嗯网页中的小程序有错误。 “错误”:点击查看详细信息“..所以当我点击时,只有弹出显示 NullPointerException
-
"..there is an error on applet in the pages" 该输出在 Java 控制台中。确保 Java Console 配置为显示小程序和 JWS 应用程序。如果默认级别没有输出,请提高并重试。
标签: java html applet nullpointerexception japplet