可以利用drawLine;再来几个循环。

解决方案 »

  1.   

    怎么可能呢?应该要用到sin函数才是
      

  2.   

    提个思路把:比如:
    x取0.1,0.2,........10然后:
    fillOval(x*10,(int)sin(x),1,1);
      

  3.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*; public class GUIdemo extends JFrame implements ActionListener
    {
        int tag=0;
    int width=400,height=400;
    public static void main(String []args)
    {
    GUIdemo pic = new GUIdemo();
    pic.setVisible(true);
    } public GUIdemo()
    {
    JButton sin;
    JButton cos;
    JButton exit;
        JPanel panel;
    setSize(400,400);
    addWindowListener(new WindowDestroyer());
    setTitle("GUIdemo by java");
    Container contentPane =getContentPane();
    contentPane.setBackground(Color.white);
    contentPane.setLayout(new BorderLayout());        panel = new JPanel();
    sin = new JButton("sin");
    sin.addActionListener(this);
    cos = new JButton("cos");
    cos.addActionListener(this);
    exit = new JButton("exit");
    exit.addActionListener(this);
    panel.add(sin);
    panel.add(cos);
    panel.add(exit);
    contentPane.add(panel,BorderLayout.NORTH);
    } public void actionPerformed(ActionEvent e)
    {
    String action = e.getActionCommand();
    if(action.equals("sin"))
    {
    tag = 1;
    repaint();
    } if(action.equals("cos"))
    {
    tag = 2;
    repaint(); }
    if(action.equals("exit"))
    {
    System.exit(0);
    }
    } public void paint(Graphics g)
    {
    super.paint(g);
    g.drawLine(200,0,200,400);
    g.drawLine(0,200,400,200);
    g.setColor(Color.red);
    if(tag ==1)
    {
                for(int i=0;i<=400;i++)
    {
    g.fillOval(i,(int)(200+20*Math.sin(i/(4*Math.PI))),1,1);
        }
    }
           if(tag == 2)
       {
      for(int i=0;i<=400;i++)
     {
      g.fillOval(i,(int)(200+20*Math.cos(i/(4*Math.PI))),1,1);
         }
    } }}