我需要创建一个名为“TriangleShape”的类来实现java.awt.Shape。

现在另一个类“TriangleComponent”应该有一个TriangleShape类的对象,它应该绘制一个三角形,并且具有给定的边长。

我设法创建它,但我读过三角形应该按照以下方式绘制:

TriangleShape t = new TriangleShape(30,40,50);

g2.draw(t); //This is the Graphics2D object that I use in paintComponent以下是我创建的代码,但它使用Line2D创建三角形。

它是TriangleShape类,假设我已经实现了Shape类的所有方法。

public class TriangleShape implements java.awt.Shape{

private double a, b, c;

private int x,y;

private Point2D loc;

public TriangleShape() {

this.a=0;

this.b=0;

this.c=0;

}

public TriangleShape(double a, double b, double c) {

//if supplied dimensions form a valid Triangle

if ( this.isValid(a,b,c) ) {

this.a = a;

this.b = b;

this.c = c;

}

//Otherwise make it zero sized triangle

else{

this.a=0;

this.b=0;

this.c=0;

}

}

public void resize(double a, double b, double c) {

if ( this.isValid(a,b,c) ) {

this.a = a;

this.b = b;

this.c = c;

}

//else let size remain unchanged

}

public TriangleShape getRandomTriangle() {

TriangleShape t = new TriangleShape(5,8,9);

return t;

}

public double area(){

double area, s;

s = (a+b+c)/2;

area = Math.sqrt(s *(s-a) * (s-b) * (s-c));

return area;

}

private boolean isValid(double a, double b, double c) {

double s = (a+b+c)/2;

if ( ((s-a) * (s-b) * (s-c)) <= 0 )

return false;

else

return true;

}

public double perimeter() {

double p;

p = a+b+c;

return p;

}

public double getA(){

return a;

}

public double getB(){

return b;

}

public double getC(){

return c;

}

public void setLocation(Point2D location){

loc = location;

}

public Point2D getLocation(){

return loc;

}

public double getX(){

return loc.getX();

}

public double getY(){

return loc.getY();

}和TriangleComponent类:

public class TriangleComponent extends JComponent{

TriangleShape t;

double alpha, beta, gamma;

double a,b,c;

double X,Y;

@Override

protected void paintComponent(Graphics g) {

//super.paintComponent(g);

Graphics2D g2 = (Graphics2D) g;

t = new TriangleShape(100,100,190);

t.setLocation(new Point2D.Double(100,500));

a = t.getA();

b = t.getB();

c = t.getC();

X = t.getX();

Y = t.getY();

///Drawing Base line.....

g2.draw(new Line2D.Double(X,Y,(X+c),Y)); //line c...

g2.draw(new Line2D.Double((X+c), Y, ((X+c)+a*Math.cos(Math.PI+getBeta())), (Y+a*Math.sin(Math.PI+getBeta())))); //line a...

//JOIning the last end points

g2.draw(new Line2D.Double(X, Y, ((X+c)+a*Math.cos(Math.PI+getBeta())), (Y+a*Math.sin(Math.PI+getBeta()))));

System.out.println("X1 = "+X+" Y1 = "+Y);

System.out.println("X2 = "+(X+c)+" Y2 = "+Y);

System.out.println("X3 = "+((X+c)+a*Math.cos(Math.PI+getBeta()))+" Y3 = "+ (Y+a*Math.sin(Math.PI+getBeta())));

//System.out.println("Alpha = "+getAlpha());

System.out.println("Gamma = "+(getGamma()*180)/Math.PI);

}

public double getAlpha(){

double temp = Math.acos(((Math.pow(c, 2)+Math.pow(b, 2))-Math.pow(a, 2))/(2*b*c));

System.out.println("Alpha = "+temp+" Degrees");

return temp;

}

public double getBeta(){

double temp = Math.acos(((Math.pow(c, 2)+Math.pow(a, 2))-Math.pow(b, 2))/(2*a*c));

System.out.println("Beta = "+temp+" Degrees");

return (temp);// * Math.PI)/180;

}

public double getGamma(){

double temp = Math.acos(((Math.pow(a, 2)+Math.pow(b, 2))-Math.pow(c, 2))/(2*b*a));

System.out.println("Gamma = "+temp+" Degrees");

return (temp);// * Math.PI)/180;

}

}这是有效的,但我需要一种绘制三角形的方式,而不依赖Graphics2D或直接使用paintComponent方法绘制它。有没有办法做到这一点?

java写triangle_Java - 制作Triangle类相关推荐

  1. 用Java写LRC制作器,实现音乐播放和滑块条进度同步

    最近两天,我第一次尝试用Java写一个GUI程序,写了个LRC文件编辑器.简单地说,就是先导入歌,然后导入歌词(顺序可以颠倒,导入歌词可以用复制粘贴代替),然后一边播放歌曲,一边添加时间标签.然后根据 ...

  2. java ubb_月光软件站 - 编程文档 - Java - JAVA写的简单UBB类

    最近做论坛碰到了UBB的问题,这个很大众化的东西,怎么没有JAVA写的解释器呢,实在是该写一个.下面的这个不全,但是可以应付一下. import java.util.*; public class H ...

  3. java 计时 timeclock_用 java 写一个clock的类,100毫秒的时钟 求代码。。越简单越好。。最好有注释...

    展开全部 这里有一个时钟的类,你看一下吧,不明白你的 100毫秒的时钟 是什么意思. import java.awt.BasicStroke; import java.awt.BorderLayout ...

  4. java 写 xml 文件 工具类_XML读写工具类

    摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: packagecom.test.selenium.pages;import ...

  5. Java写一个excel工具类_Java中Excel写操作工具类--Java免费学习网

    核心提示:package com.common.excel;import com.common.excel.exception.WriteExcelException;import jxl.Workb ...

  6. 用java写一个单例类_Java 写一个单例模式(Singleton)出来

    第一种:饱汉模式 public  class   SingleTon{ private  SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 privat ...

  7. java 程序写出三个类,triangle,lader,circle(简单易懂)

    编写一个Java应用程序,该程序中有三个类:Triangle.Trapezoid和Circle,分别用来刻画"三角形"."梯形"和"圆形". ...

  8. Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:

    画出Triangle类和GeometricObject类的UML图,并实现这些类.编写一个测试程序,提示用户输入三角形的三条边.颜色以及一个boolean值表明该三角形是否填充.程序需要根据输入创建一 ...

  9. Java制作的类祖码游戏-数字祖码

    古老的传说--祖玛     20世纪初,传说在秘鲁安第斯山脉的崇山峻岭中有座神秘古城.西班牙人在长达300多年的殖民统治期间对它一无所知,秘鲁独立后100年里也无人涉足.在400年的时光中,只有翱翔的 ...

最新文章

  1. 都在建议,不要直接使用 @Async 注解,为什么?
  2. Linux : SUID SGID
  3. python在当前目录创建txt文件-python-在目录中创建多个文本文件的字数字...
  4. 初学者怎样看懂python代码_入门编程(初学者怎样看懂代码)
  5. 采用光线跟踪绘制场景 c++_光线追踪的相干性聚集:硬件光线追踪的优势
  6. [java] Unsupported major.minor version 51.0 错误解决方案
  7. 比较各种SpA分类标准
  8. FckEditor 2.6.4升级手记
  9. ueditor 禁止编辑_织梦ueditor百度编辑器div style被过滤解决办法
  10. 明解C语言第七章习题
  11. 关于使用tess4j-OCR识别图片中文教程,亲测可用,不报错
  12. 使用 Python 做音频处理·总章(持续更新)
  13. 2022保研经验帖——吉大、华师、浙大、中大、南航/理、东南、南开等
  14. 人工智能--自然演绎推理
  15. 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌
  16. ios appstore 审核 Guideline 5.2.2 资讯类APP解决方案
  17. python高阶学习之一:c++调用python
  18. 扫雷html5简单初级,纯原生JS用面向对象class方法实现简易扫雷小游戏
  19. SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group
  20. Dobbo问题及解决方案:forbid-consumer

热门文章

  1. idea 一直 performing vcs refresh
  2. 深入浅出了解几种简单设计模式
  3. 【玻璃心,碎一地】快来用人工智能技术测测有几个微信好友删除你
  4. 上海互联网整体沉沦:盛大巨人全没落 8年没出一个马云
  5. 系统性能统计(CPU占用率,内存占用率,系统平均负载)
  6. mac环境下搭建frida环境并连接网易mumu模拟器
  7. HBuilder uniapp 真机测试打包测试
  8. css 默认显示滚动条,css控制默认滚动条样式
  9. android T分屏流程
  10. 【新概念二】 28-No parking