【java学习记录】4.计算等腰三角形、正方形、圆的面积并 画出它们的图像

(源码在上传的压缩包“【java学习记录】1-10的代码”中可看到,该压缩包可下载)


Figure 共享父类

public abstract class Figure {//abstract 抽象类, Figure 共享父类
double edge;//edge 长度
Figure(){}
Figure(double edge){
this.edge=edge;//初始化
}
abstract void getArea();//获取面积的函数
abstract void drawSquare(Graphics g);//画图函数
}

RightTriangle 等腰直角三角形

public class RightTriangle extends Figure{//等腰直角三角形


public RightTriangle(){}

public RightTriangle(double edge){
super(edge);
//this.edge=edge;
}


@Override
void drawSquare(Graphics g) {
// TODO Auto-generated method stub
int[] x={100,200+(int)edge,200,100};//设置横坐标
int[] y={100,200,200+(int)edge,100};//设置纵坐标
g.drawPolygon(x, y, 4);//x,y为相互对应的坐标点,5为边数,drawPolygon 画折线
g.setColor(new Color(255, 0,0));//设置颜色
g.fillPolygon(x, y, 4);//填充图形
}


@Override
void getArea() {
// TODO Auto-generated method stub
 
System.out.println("腰长为"+edge+"的等腰直角面积为"+0.5*edge*edge); 
}


}

Square 正方形

public class Square extends Figure{//正方形


Square(){}

Square(double edge){
super(edge);
}

@Override
void drawSquare(Graphics g) {
// TODO Auto-generated method stub
int[] x={300,300+(int)edge,300+(int)edge,300,300};
int[] y={300,300,300+(int)edge,300+(int)edge,300};
g.drawPolygon(x, y, 5);//x,y为相互对应的坐标点,5为边数,drawPolygon 画折线
g.setColor(Color.blue);//设置颜色
g.fillPolygon(x, y, 5);//填充图形
}


@Override
void getArea() {
// TODO Auto-generated method stub
System.out.println("边长为"+edge+"的正方形面积为:"+edge*edge);
}
}

Cycle 圆形

public class Cycle extends Figure{//圆形

Cycle(){}

Cycle(double edge){
super(edge);
}

@Override
void drawSquare(Graphics g) {
// TODO Auto-generated method stub
int x=100;
int y=400;
g.drawOval(x, y, 100+(int)edge, 100+(int)edge);//drawOval 画圆
g.setColor(Color.yellow);//设置颜色
g.fillOval(x, y, 100+(int)edge, 100+(int)edge);
}


@Override
void getArea() {
// TODO Auto-generated method stub
System.out.println("半径为"+edge+"的圆面积为:"+3.14*edge*edge);
}


}

Application 创建面板及按钮,并为按钮添加点击事件

public class Application extends JFrame implements ActionListener{//创建面板及按钮,并为按钮添加点击事件
JFrame jf;
Panel p;
static RightTriangle r=new RightTriangle();//腰长为30的等腰直角三角形
static Square s=new Square();//边长为2的正方形
static Cycle c=new Cycle();//半径为2的圆
// RightTriangle r;
// Square s;
// Cycle c;
//添加按钮
JButton rightTriangleButton=new JButton("三角形");
JButton SquareButton=new JButton("正方形");
JButton CycleButton=new JButton("圆形");


/*********************************************************************************************************/
Application(RightTriangle r,Square s,Cycle c){
this.r=r;
this.s=s;
this.c=c;
}


public Application(){
jf=new JFrame("画图");//创建窗体,并命名为"画图"
jf.setVisible(true);//设置可见
jf.setSize(600, 600);//设置大小
jf.setLocationRelativeTo (null);//框体放屏幕中间
jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);//关闭程序
p=new Panel();//创建面板
p.setBackground(Color.white);//设置颜色
p.setLayout(null);//设置格式为空
jf.add(p);//添加到框体上

/*********************************************************************************************************/


//添加按钮
rightTriangleButton=new JButton("三角形");
SquareButton=new JButton("正方形");
CycleButton=new JButton("圆形");
//设置按钮位置及大小
rightTriangleButton.setBounds(450, 100, 100, 50);
SquareButton.setBounds(450, 200, 100, 50);
CycleButton.setBounds(450, 300, 100, 50);
//将按钮添加到窗体上
p.add(rightTriangleButton);
p.add(SquareButton);
p.add(CycleButton);

/*********************************************************************************************************/

//给按钮添加监听事件
rightTriangleButton.addActionListener(this);
SquareButton.addActionListener(this);
CycleButton.addActionListener(this);
}

/*********************************************************************************************************/


@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Graphics g = p.getGraphics();
if (e.getSource()==rightTriangleButton)
{
r.drawSquare(g);//调用画图方法
//r.getArea();//获取面积
//System.out.println("三角形");


}else if (e.getSource()==SquareButton)
{
s.drawSquare(g);
//s.getArea();
//System.out.println("正方形");


}else if (e.getSource()==CycleButton)
{
c.drawSquare(g);
//c.getArea();
//System.out.println("圆形");
}
}

}

TestSquare测试类

public class TestSquare{

public static void main(String[] args){
RightTriangle r=new RightTriangle(100);//腰长为100的等腰直角三角形
Square s=new Square(100);//边长为100的正方形
Cycle c=new Cycle(2);//半径为2的圆
//获取面积
r.getArea();
s.getArea();
c.getArea();
//创建面板并画图
new Application(r,s,c);
new Application();
//new TestSquare();

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值