源程序:
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;public class Sign extends JFrame{
       public Sign(){
         super("Use of Compressed Air Prohibited");
         setSize(410,435);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         SignPanel sp=new SignPanel();
         add(sp);
         setVisible(true);
       }       public static void main(String[] arguments){
         Sign sign=new Sign();
       }
}class SignPanel extends JPanel{
       public void paintComponent(Graphics comp){
         super.paintComponent(comp);
         Graphics2D comp2D=(Graphics2D)comp;
         comp2D.setColor(Color.white);
         comp2D.fillRect(0,0,400,400);
         
         comp2D.setColor(Color.red);
         Ellipse2D.Float sign1=new Ellipse2D.Float(0F,0F,400F,400F);
         comp2D.fill(sign1);
         comp2D.setColor(Color.white);
         Ellipse2D.Float sign2=new Ellipse2D.Float(55F,55F,290F,290F);
         comp2D.fill(sign2);         comp2D.setColor(Color.black);
         Ellipse2D.Float head=new Ellipse2D.Float(160F,96F,32F,32F);
         comp2D.fill(head);
         GeneralPath body=new GeneralPath();
         body.moveTo(159F,162F);
         body.lineTo(119F,303F);
         body.lineTo(139F,303F);
         body.lineTo(168F,231F);
         body.lineTo(190F,303F);
         body.lineTo(213F,303F);
         body.lineTo(189F,205F);
         body.lineTo(203F,162F);
         body.lineTo(247F,151F);
         body.lineTo(236F,115F);
         body.lineTo(222F,118F);
         body.lineTo(231F,140F);
         body.lineTo(141F,140F);
         body.lineTo(101F,190F);
         body.lineTo(112F,197F);
         body.lineTo(144F,162F);
         body.closePath();
         comp2D.fill(body);
 
         comp2D.setColor(Color.black);
         comp2D.fillRect(251,191,33,118);
         comp2D.fillRect(262,160,13,31);
         GeneralPath nozzle=new GeneralPath();
         nozzle.lineTo(252F,176F);
         nozzle.lineTo(262F,160F);
         nozzle.lineTo(262F,176F);
         nozzle.closePath();
         comp2D.fill(nozzle);         comp2D.setColor(Color.black);
         BasicStroke pen=new BasicStroke(2F);
         comp2D.setStroke(pen);
         Line2D.Float ln1=new Line2D.Float(203F,121F,255F,102F);
         comp2D.draw(ln1);
         Line2D.Float ln2=new Line2D.Float(255F,102F,272F,116F);
         comp2D.draw(ln2);
         Line2D.Float ln3=new Line2D.Float(272F,134F,252F,158F);
         comp2D.draw(ln3);         comp2D.setColor(Color.red);
         GeneralPath sign3=new GeneralPath();
         sign3.moveTo(110F,78F);
         sign3.lineTo(321F,289F);
         sign3.lineTo(290F,317F);
         sign3.lineTo(81F,107F);
         sign3.closePath();
         comp2D.fill(sign3);
       }
}
在命令行里编译成class文件后,运行该程序时,出现下列异常;各位高手,请问怎样才能正常运行该程序呢?
Exception in thread "AWT-EventQueue-0" java.awt.geom.IllegalPathStateException:
missing initial moveto in path definition
        at java.awt.geom.GeneralPath.needRoom(Unknown Source)
        at java.awt.geom.GeneralPath.lineTo(Unknown Source)
        at SignPanel.paintComponent(Sign.java:61)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JLayeredPane.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
        at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
        at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
        at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
        at java.awt.Container.paint(Unknown Source)
        at sun.awt.RepaintArea.paintComponent(Unknown Source)
        at sun.awt.RepaintArea.paint(Unknown Source)
        at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

解决方案 »

  1.   

    异常信息还没完,现补充如下:
    Exception in thread "AWT-EventQueue-0" java.awt.geom.IllegalPathStateException:
    missing initial moveto in path definition
            at java.awt.geom.GeneralPath.needRoom(Unknown Source)
            at java.awt.geom.GeneralPath.lineTo(Unknown Source)
            at SignPanel.paintComponent(Sign.java:61)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JLayeredPane.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
            at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
            at javax.swing.JComponent._paintImmediately(Unknown Source)
            at javax.swing.JComponent.paintImmediately(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
    n Source)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-0" java.awt.geom.IllegalPathStateException:
    missing initial moveto in path definition
            at java.awt.geom.GeneralPath.needRoom(Unknown Source)
            at java.awt.geom.GeneralPath.lineTo(Unknown Source)
            at SignPanel.paintComponent(Sign.java:61)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JLayeredPane.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
            at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
            at javax.swing.JComponent._paintImmediately(Unknown Source)
            at javax.swing.JComponent.paintImmediately(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
    n Source)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-0" java.awt.geom.IllegalPathStateException:
    missing initial moveto in path definition
            at java.awt.geom.GeneralPath.needRoom(Unknown Source)
            at java.awt.geom.GeneralPath.lineTo(Unknown Source)
            at SignPanel.paintComponent(Sign.java:61)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at javax.swing.JLayeredPane.paint(Unknown Source)
            at javax.swing.JComponent.paintChildren(Unknown Source)
            at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
            at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
            at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
            at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
            at java.awt.Container.paint(Unknown Source)
            at javax.swing.JFrame.update(Unknown Source)
            at sun.awt.RepaintArea.updateComponent(Unknown Source)
            at sun.awt.RepaintArea.paint(Unknown Source)
            at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
      

  2.   

    在nozzle.lineTo(252F,176F);之前加上一个moveTo试试。。
      

  3.   

    请问在命令行里怎样进行断点调试?本人刚开始学java,只是在记事本里敲代码。
      

  4.   

    是这个样子的图么? 如果是的话
    大概在61行的样子
    加上nozzle.lineTo(x,y);
      

  5.   

    在nozzle.lineTo(252F,176F);之前加上一个moveTo就行了,谢谢你。
    但是为什么加句moveTo就行了呢?
      

  6.   

    就是这个图,原来之前敲代码的时候把moveTo敲成lineTo了。
      

  7.   

    用moveTo 是设置起点
    用lineTo 是设置终点