这个程序是实现简单绘图功能,
具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
请高手帮忙分析
设计思路
程序框架图
2.1、程序中所用类说明
2.2、主要成员方法:
2.3、实现接口方法
2.4、线程应用
2.5、异常处理说明 
程序部分源代码及注释明天要交报告了,不会写啊
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
class MyFrame extends Frame implements ActionListener
{
MenuBar menubar;
    Menu menua,menub,menuc,menud;
    MenuItem itema,itemb,itemc,itemd,iteme,itemf;
    Button buttona,buttonb,buttonc,buttond,buttone,buttonf;
MyCanvas canvas;
MyFrame()
{
 Toolkit tool=getToolkit(); 
     Dimension dim=tool.getScreenSize();
     setBounds(50,50,dim.width/2,dim.height/3);
     
      menubar=new MenuBar(); 
      menua=new Menu("直线");   
      menub=new Menu("椭圆");
      menuc=new Menu("矩形"); 
      menud=new Menu("多边形"); 
      
      itema=new MenuItem("直线");
      itemb=new MenuItem("空心椭圆");
      itemc=new MenuItem("实心椭圆"); 
      itemd=new MenuItem("空心矩形");
      iteme=new MenuItem("实心矩形");
          itemf=new MenuItem("多边形");
          
          menubar.add(menua);
      menubar.add(menub);
      menubar.add(menuc);
      menubar.add(menud);
      menua.add(itema);
      menub.add(itemb);
      menub.add(itemc);
      menuc.add(itemd);
      menuc.add(iteme);
          menud.add(itemf);
          setMenuBar(menubar);
          
      itema.addActionListener(this);
      itemb.addActionListener(this); 
      itemc.addActionListener(this);
      itemd.addActionListener(this); 
      iteme.addActionListener(this);
          itemf.addActionListener(this);
          
        Panel p=new Panel();
             
buttona=new Button("直线");
buttonb=new Button("空心椭圆");
buttonc=new Button("实心椭圆");
buttond=new Button("空心矩形");
buttone=new Button("实心矩形");
buttonf=new Button("多边形");
p.add(buttona);
p.add(buttonb);
p.add(buttonc);
p.add(buttond);
p.add(buttone);
p.add(buttonf);

buttona.addActionListener(this);
buttonb.addActionListener(this);
buttonc.addActionListener(this);
buttond.addActionListener(this);
buttone.addActionListener(this);
          buttonf.addActionListener(this);
         
          buttona.setBackground(Color.pink);
buttonb.setBackground(Color.pink);
buttonc.setBackground(Color.pink);
buttond.setBackground(Color.pink);
buttone.setBackground(Color.pink);
buttonf.setBackground(Color.pink);
setVisible(true);
          validate();
       
        canvas=new MyCanvas();
        add(canvas,BorderLayout.CENTER);
    add(p,BorderLayout.SOUTH);
    setBounds(100,100,400,400);
            setVisible(true);
          validate();
    setBounds(200,200,500,550);
        setVisible(true);
    
       addWindowListener(new WindowAdapter()
                        {  public void windowClosing(WindowEvent e)
                           {  System.exit(0);
                           }
                        }
                       );
        }
   class MyCanvas extends Canvas
 {
int line,koval,oval,krect,rect,polygon;


public void setLine(int line)
{
this.line=line;
}
public void setkoval(int koval)
{
this.koval=koval;
}
public void setOval(int oval)
{
this.oval=oval;
}
public void setkrect(int krect)
{
this.krect=krect;
}
public void setRect(int rect)
{
this.rect=rect;
} public void setpolygon(int polygon)
{

this.polygon=polygon;

}


public void paint(Graphics g)
{
if(line==1)
{
g.drawLine(150,100,500,300);
}
else if(koval==1)
{

g.drawOval(100,50,300,350);
}
else if(oval==1)
{
g.setColor(Color.pink);
g.fillOval(100,100,300,200);
}
else if(krect==1)
{
g.drawRect(120,100,200,300);
}
else if(rect==1)
{
g.setColor(Color.orange);
g.fillRect(100,100,300,250);
}

else if(polygon==1)
{

  int px[]={220,300,100,250,150,70};
         int py[]={20,300,330,150,190,70};
         g.setColor(Color.green);
         g.fillPolygon(px,py,6);
        
}
}


}  public void actionPerformed(ActionEvent e)
   {  
 
  if(e.getSource()==itema)  
         
      { canvas.setLine(1);
        canvas.setkoval(0);
          canvas.setOval(0);
          canvas.setkrect(0);
      canvas.setRect(0);
      canvas.setpolygon(0);
      canvas.repaint();
   
    }
        
   else if(e.getSource()==itemb) 
      
         {  canvas.setLine(0);
                canvas.setkoval(1);
                canvas.setOval(0);
                  canvas.setkrect(0);
              canvas.setRect(0);
              canvas.setpolygon(0);
              canvas.repaint();
         }
        
        else if(e.getSource()==itemc)
      
          
         {  canvas.setLine(0);
                   canvas.setkoval(0);
                  canvas.setOval(1);
                canvas.setkrect(0);
            canvas.setRect(0);
            canvas.setpolygon(0);
            canvas.repaint();
         }
        
        else if(e.getSource()==itemd) 
         
           {  canvas.setLine(0);
                   canvas.setkoval(0);
                  canvas.setOval(0);
                canvas.setkrect(1);
            canvas.setRect(0);
            canvas.setpolygon(0);
            canvas.repaint();
           }
         
        else if(e.getSource()==iteme) 
       
         {  canvas.setLine(0);
                   canvas.setkoval(0);
                  canvas.setOval(0);
                canvas.setkrect(0);
            canvas.setRect(1);
            canvas.setpolygon(0);
            canvas.repaint();
         }
      
        
        else if(e.getSource()==itemf) 
      
         {       canvas.setLine(0);
                canvas.setkoval(0);
                  canvas.setOval(0);
                canvas.setkrect(0);
            canvas.setRect(0);
            canvas.setpolygon(1);
            canvas.repaint();
         }
      
       
        else if(e.getSource()==buttona)  
        
      {   canvas.setLine(1);
                canvas.setkoval(0);
            canvas.setOval(0);
                canvas.setkrect(0);
            canvas.setRect(0);
            canvas.setpolygon(0);
            canvas.repaint();
    }
         
       
        else if(e.getSource()==buttonb)
       
         {   canvas.setLine(0);
                    canvas.setkoval(1);
                canvas.setOval(0);
            canvas.setkrect(0);
        canvas.setRect(0);
        canvas.setpolygon(0);
        canvas.repaint();
         }
      
        else if(e.getSource()==buttonc) 
      
         {canvas.setLine(0);
             canvas.setkoval(0);
             canvas.setOval(1);
                 canvas.setkrect(0);
             canvas.setRect(0);
             canvas.setpolygon(0);
             canvas.repaint();
         }
      
        else if(e.getSource()==buttond) 
      
         {  canvas.setLine(0);
                canvas.setkoval(0);
                  canvas.setOval(0);
                canvas.setkrect(1);
            canvas.setRect(0);
            canvas.setpolygon(0);
            canvas.repaint();
         }
        
        else if(e.getSource()==buttone) 
       
         {  canvas.setLine(0);
                canvas.setkoval(0);
                canvas.setOval(0);
                canvas.setkrect(0);
            canvas.setRect(1);
            canvas.setpolygon(0);
            canvas.repaint();
         }
       
        else if(e.getSource()==buttonf) 
       
         {  canvas.setLine(0);
                canvas.setkoval(0);
                canvas.setOval(0);
            canvas.setkrect(0);
        canvas.setRect(0);
        canvas.setpolygon(1);
        canvas.repaint();
         }
      
      
   }
}public class HuaBu
{ public static void main(String args[])
{ MyFrame frame=new MyFrame() ; 
frame.setTitle("~~您可以在这张画布上画出你喜欢的图形哦~~");  
}
}

解决方案 »

  1.   

    你们就别笑了,我连菜鸟都达不倒,那能帮我解释下边这些是什么意思吗  (最好按句解释) 
        MenuBar menubar;    
        Menu menua,menub,menuc,menud; 
        MenuItem itema,itemb,itemc,itemd,iteme,itemf; 
        Button buttona,buttonb,buttonc,buttond,buttone,buttonf;
    MyCanvas canvas;
    MyFrame()
    {
          Toolkit tool=getToolkit(); 
          Dimension dim=tool.getScreenSize();
          setBounds(50,50,dim.width/2,dim.height/3);                  canvas=new MyCanvas();
            add(canvas,BorderLayout.CENTER);
                    add(p,BorderLayout.SOUTH);
                    setBounds(100,100,400,400);
                    setVisible(true);
                  validate();
                    setBounds(200,200,500,550);
            setVisible(true);

        
           addWindowListener(new WindowAdapter()
                { public void windowClosing(WindowEvent e)
                   {  System.exit(0);
                               }
                            }
                         );
      

  2.   

    求大神们解释下列语句啊!!!!!!!!
    add(canvas,BorderLayout.CENTER);
    addWindowListener(new WindowAdapter()
    public void setLine(int line)
    public void paint(Graphics g)
    public void actionPerformed(ActionEvent e)
      

  3.   

    其实你可以直接看类库的!!这些都在类库里!!add(canvas,BorderLayout.CENTER);      //将canvas画布放在本容器的中央
    addWindowListener(new WindowAdapter() //注册一个监听者适配器,用于处理窗口事件
    public void setLine(int line)
    public void paint(Graphics g)        //用于在容器中绘图
    public void actionPerformed(ActionEvent e)  //在该方法中处理单击按钮,菜单等事件
      

  4.   

    再请教下这是什么方法public void setLine(int line)
    validate();
      

  5.   

    回LZ:那些setLine, setXXX的方法都是设置标志位,表示当前绘制的是什么,是线、是矩形 还是别的什么的paint方法根据这些标志位的值进行图形的绘制下面那个actionPerformed方法是一个Button的点击事件
    首先根据e.getSource()判断是哪个Button点击,然后调用方法setXXX设置标志位
    最后调用repaint方法重绘界面就酱紫