【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();

}

}



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答您的问题。关于创建一个包含三角形、形和正方形的图形类,您可以尝试以下代码: ``` public abstract class Shape { public abstract double getArea(); } public class Triangle extends Shape { private double base; private double height; public Triangle(double base, double height) { this.base = base; this.height = height; } public double getArea() { return 0.5 * base * height; } } public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } } public class Square extends Shape { private double side; public Square(double side) { this.side = side; } public double getArea() { return side * side; } } ``` 这里我们定义了一个抽象类 Shape,它有一个抽象方法 getArea(),用于计算形状的面积。然后我们定义了三个类 Triangle、Circle 和 Square,它们继承自 Shape 类,并且实现了 getArea() 方法。 注意到 Triangle、Circle 和 Square 都没有显式声明构造函数,这是因为它们继承了 Shape 的默认构造函数。另外,Triangle 类中我们定义了两个实例变量 base 和 height,Circle 类中我们定义了一个实例变量 radius,Square 类中我们定义了一个实例变量 side。 使用这些类,您可以创建 Triangle、Circle 和 Square 的对象,并且调用它们的 getArea() 方法来计算它们的面积。 希望这能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值