注册 登录
编程论坛 JAVA论坛

画一个圆用窗口显示,圆的尺寸怎么通过控制台输入?

啡因 发布于 2015-10-29 15:34, 407 次点击


程序代码:
package 实验3_2;
import java.awt.*;
import javax.swing.*;
public class MyCircle
{   
    private int r;
    private Color Color2;
    private int x,y;
    JFrame mf;
    static double π=3.14159;
    //设置格式
    public MyCircle(int r,int x,int y,JFrame mf)
    {
        this.r=r;
        this.mf=mf;
        this.x=x;
        this.y=y;
        this.Color2=new Color(25,25,100);
    }
    public void draw (Graphics g)
    {
        g.setColor(this.Color2);
        g.fillOval(x, y, r, r);
    }
    public void test()
    {
        mf.repaint();
    }
}

//窗口
程序代码:
package 实验3_2;
import javax.swing.*;
import java.util.Scanner;
import java.awt.*;


    @SuppressWarnings("serial")
    public class MyJFrame extends JFrame
    {
   
        MyCircle mc;
        
        public MyJFrame()
        {
            this.setSize(1000,1000);
            this.setVisible(true);
        }
        public void paint(Graphics g)
        {
            mc.draw(g);
            
        }
        public static void main(String[] arg)
        {
            // TODO Auto-generated method stub
            MyJFrame mf=new MyJFrame();
            
            int X1=50;
            int Y1=200;
            int R1=100;
            Scanner in=new Scanner(System.in);
            X1=in.nextInt();
            Y1=in.nextInt();
            R1=in.nextInt();
            mf.mc=new MyCircle(R1,X1,Y1,mf);
            mf.mc.test();
        }
}

控制台输出Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at 实验3_2.MyJFrame.paint(MyJFrame.java:21)
    、、

2 回复
#2
诸葛欧阳2015-10-29 20:00
MyJframe中的MyCircle没有定义
#3
林月儿2015-10-30 12:49
程序代码:
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class MyCircle extends JPanel
{   
    /**
     *
     
*/
    private static final long serialVersionUID = 1L;
    private int r;
    private Color color;
    private int x,y;
    static double π=3.14159;
    //设置格式
    public MyCircle(int r,int x,int y)
    {
        this.r=r;
        this.x=x;
        this.y=y;
        this.color=new Color(25,25,100);
    }
    public void paint(Graphics g)
    {
        g.setColor(this.color);
        g.fillOval(x, y, r, r);
    }
}

程序代码:
import java.util.Scanner;

import javax.swing.JFrame;

public class MyJFrame extends JFrame
{

    /**
     *
     
*/
    private static final long serialVersionUID = 1L;
   
    public MyJFrame()
    {
        this.setSize(1000,1000);
    }
    public static void main(String[] arg)
    {
        MyJFrame mf=new MyJFrame();
        
        int X1=50;
        int Y1=200;
        int R1=100;
        Scanner in=new Scanner(System.in);
        X1=in.nextInt();
        Y1=in.nextInt();
        R1=in.nextInt();
        in.close();
        MyCircle mc=new MyCircle(R1,X1,Y1);
        mf.add(mc);
        mf.setVisible(true);
    }
}
1