在choice的事件处理中调用paint方法啊

解决方案 »

  1.   

    我不明白paint是如何知道要在Canvas中画的?
    public void paint(Graphics g)并没有指定要画的对象
      

  2.   

    在Choice的actionPerformed时间里调用Canvas的repaint(Graphics g)方法
      

  3.   

    PAINT 方法是自动通过调用REPAINT来调用的,我用的时候是在PAINT方法中设个标志,这个标志是在你需要FRAME重画的时候调用你的画法(如画圆什么的)。但是我在用的时候还是没有很好的解决刷新的问题。不知道我提供的方法和不和你
      

  4.   

    方法paint的参数Graphics定义了修改小应用程序显示区域所需的图形环境。Graphics类由浏览器实例化,对象实例传递给paint,因此,你不必创建该对象参数。
      

  5.   

    现在也不明白??:(谢谢!!
    import java.awt.*;
    import java.awt.event.*;
    public class onehunderdthirtyfour implements ItemListener  {
      protected Frame f;
      protected Panel p1,p2,p3;
      protected Menu m1,m2;
      protected MenuItem mi1,mi2,mi3;
      public MenuBar mb;
      protected Checkbox c1,c2,c3,c4,c5;
      protected CheckboxGroup cg;
      protected Choice co;
      protected  Canvas cs; public void go( ) {
         f = new Frame("PaintGUI");
         f.addWindowListener(new MyListener());
         mb = new MenuBar();
         m1 = new Menu ("File");
         m2 = new Menu ("Help");
         mi1 = new MenuItem("Clear");
         mi2 = new MenuItem("Print");
         mi3 = new MenuItem("Quit");
         m1.add(mi1);
         m1.add(mi2);
         m1.add(mi3);
         mb.add(m1);
         mb.setHelpMenu(m2);
         f.setMenuBar(mb);     p1 = new Panel();
         p2 = new Panel();
         p1.setBackground(Color.white);
         p2.setBackground(Color.cyan);
         f.add(p1,BorderLayout.CENTER);
         f.add(p2,BorderLayout.SOUTH);
         co = new Choice();
         co.addItem("Round");
          co.addItem("Square");
    co.addItemListener(this);
          p2.add(co);
           cg = new CheckboxGroup();
         c1 = new Checkbox("Red",false,cg);
          c2 = new Checkbox("Green",false,cg);
           c3 = new Checkbox("Blue",false,cg);
    c4 = new Checkbox("Black",false,cg);
     c5 = new Checkbox("Filled");
     p2.add(c1);
    p2.add(c2);
          p2.add(c3);
        p2.add(c4);
      p2.add(c5);
         f.setSize(400,300);
           f.setVisible(true);
     cs = new Canvas();
      cs.setBackground(Color.white);
       cs.setSize(f.getWidth(),200); p1.add(cs);
      }
        public void paint(Graphics g)
     {
         g.clearRect(30,30,30,30);  }
      public void itemStateChanged(ItemEvent e)
      {
           if(e.getItem()== "Round")
           {
    如何写牙???谢谢!!
           }
           if(e.getItem()== "Square")
           {
                    如何写牙???谢谢!!
           }  }  public onehunderdthirtyfour() {
      }
      public static void main(String[] args) {
        onehunderdthirtyfour one = new onehunderdthirtyfour();
        one.go();
      }
    }
      

  6.   

    fishbob21(fishbob) 能把你写的让我看看吗?谢谢!!
      

  7.   

    最新改进的但是还是无法显示:)夜深了:(
       public void paint(Graphics g)
     {
         g.fillRect(20,40,90,55);
     }
      public void itemStateChanged(ItemEvent e)
      {
           if(e.getItem()== "Round")
           {
        cs.repaint();
           }
           if(e.getItem()== "Square")
           {
        cs.repaint();
           }
      

  8.   

    public void paint(Graphics g)
     {
         g.fillRect(20,40,90,55);
     }
      public void itemStateChanged(ItemEvent e)
      {
           if(e.getItem().equals("Round"))
           {
        cs.repaint();
           }
           if(e.getItem().equals("Square"))
           {
        cs.repaint();
           }
      

  9.   

    import java.awt.*;
    import java.awt.event.*;
    public class onehunderdthirtyfour implements ItemListener {
        protected Frame f;
        protected Panel p1, p2, p3;
        protected Menu m1, m2;
        protected MenuItem mi1, mi2, mi3;
        public MenuBar mb;
        protected Checkbox c1, c2, c3, c4, c5;
        protected CheckboxGroup cg;
        protected Choice co;
        protected Canvas cs;
        private int imgType = 0;
        private Color color = Color.black;
        private boolean isFilled;
    public onehunderdthirtyfour() {
    }
    public void go() {
        f = new Frame("PaintGUI");    // f.addWindowListener(new MyListener());
        mb = new MenuBar();
        m1 = new Menu("File");
        m2 = new Menu("Help");
        mi1 = new MenuItem("Clear");
        mi2 = new MenuItem("Print");
        mi3 = new MenuItem("Quit");
        m1.add(mi1);
        m1.add(mi2);
        m1.add(mi3);
        mb.add(m1);
        mb.setHelpMenu(m2);
        f.setMenuBar(mb);    p1 = new Panel() {
            public void paint(Graphics g) {
                super.paint(g);
                g.setColor(color);
                switch (imgType) {
                    case 1 :
                        if (!isFilled)
                            g.drawRect(20, 20, 60, 60);
                        else
                            g.fillRect(20, 20, 60, 60);
                        break;
                    case 2 :
                        if (!isFilled)
                            g.drawOval(20, 20, 60, 60);
                        else
                            g.fillOval(20, 20, 60, 60);
                        break;
                }
            }
        };
        p2 = new Panel();
        p1.setBackground(Color.white);
        p2.setBackground(Color.cyan);
        f.add(p1, BorderLayout.CENTER);
        f.add(p2, BorderLayout.SOUTH);
        co = new Choice();
        co.addItem("Round");
        co.addItem("Square");
        co.addItemListener(this);
        p2.add(co);
        cg = new CheckboxGroup();
        c1 = new Checkbox("Red", false, cg);
        c2 = new Checkbox("Green", false, cg);
        c3 = new Checkbox("Blue", false, cg);
        c4 = new Checkbox("Black", false, cg);
        c1.addItemListener(this);
        c2.addItemListener(this);
        c3.addItemListener(this);
        c4.addItemListener(this);
        c5 = new Checkbox("Filled");
        c5.addItemListener(this);
        p2.add(c1);
        p2.add(c2);
        p2.add(c3);
        p2.add(c4);
        p2.add(c5);
        f.setSize(400, 300);
        f.setVisible(true);
        cs = new Canvas();
        cs.setBackground(Color.white);
        cs.setSize(f.getWidth(), 200);    //p1.add(cs);
    }
    public void itemStateChanged(ItemEvent e) {
        if (e.getSource() == this.co) {
            if (e.getItem() == "Round") {
                imgType = 2;
                //如何写牙???谢谢!!
            }
            else
                if (e.getItem() == "Square") {
                    //             如何写牙???谢谢!!
                    imgType = 1;
                }
        }
        else
            if (e.getSource() == c1) {
                if (c1.getState())
                    color = Color.red;
            }
            else
                if (e.getSource() == c2) {
                    if (c2.getState())
                        color = Color.green;
                }
                else
                    if (e.getSource() == c3) {
                        if (c3.getState())
                            color = Color.blue;
                    }
                    else
                        if (e.getSource() == c4) {
                            if (c4.getState())
                                color = Color.black;
                        }
                        else
                            if (e.getSource() == c5) {
                                isFilled = c5.getState();
                            }
        p1.repaint();
        f.repaint();
        f.validate();
    }
    public static void main(String[] args) {
        onehunderdthirtyfour one = new onehunderdthirtyfour();
        one.go();
    }
    }