Java 在Swing中根据用户输入绘制四面体

Java 在Swing中根据用户输入绘制四面体,java,swing,Java,Swing,我需要写一个程序,可以画一个四面体(一个有四个三角形面的三维形状)。 我们必须使用类s的GeneralPath和类Graphics2D的方法draw。关于如何做到这一点,我以前也做过类似的程序, 我创建了两个数组,分别调用baseX和baseY并设置 坐标。然后添加两个for循环以形成角。 这样你甚至可以画一个立方体 import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import java

我需要写一个程序,可以画一个四面体(一个有四个三角形面的三维形状)。
我们必须使用类s的GeneralPath和类Graphics2D的方法draw。关于如何做到这一点,我以前也做过类似的程序, 我创建了两个数组,分别调用
baseX
baseY
并设置 坐标。然后添加两个for循环以形成角。 这样你甚至可以画一个立方体

 import java.awt.*; 
  import java.awt.geom.*;  
  import java.awt.event.*; 
  import javax.swing.*; 
  public class Tetrahedron extends JFrame {
  // constructor 
  public Tetrahedron() 
  {super( "Tetrahedron" );
  setSize( 275, 150 );
  setVisible( true );  } 
  // draw tetrahedron 
  public void paint( Graphics g )
  {
  super.paint( g );     
  int baseX[] = { 110, 150, 50, 110 };
  int baseY[] = { 90, 130, 130, 90 };
  int x = 110, y = 40; 
  Graphics2D g2d = ( Graphics2D ) g;
  g2d.setColor( Color.red );
  GeneralPath tetrahedron = new GeneralPath();
  tetrahedron.moveTo( baseX[ 0 ], baseY[ 0 ] ); 
  for ( int i = 1; i < 4; i++ ) {
  tetrahedron.lineTo( x, y ); 
  tetrahedron.moveTo( baseX[ i - 1 ], baseY[ i - 1 ] );
  tetrahedron.lineTo( baseX[ i ], baseY[ i ] ); 
  }tetrahedron.closePath(); g2d.draw( tetrahedron ); 
  }
  public static void main( String args[] )
  {Tetrahedron application = new Tetrahedron();
  application.setDefaultCloseOperation( EXIT_ON_CLOSE );    }  }
import java.awt.*;
导入java.awt.geom.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类四面体扩展JFrame{
//建造师
公共四面体()
{super(“四面体”);
设置尺寸(275150);
setVisible(true);}
//画四面体
公共空间涂料(图g)
{
超级油漆(g);
int baseX[]={110,150,50,110};
int baseY[]={90,130,130,90};
int x=110,y=40;
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.red);
GeneralPath四面体=新的GeneralPath();
四面体。moveTo(baseX[0],baseY[0]);
对于(int i=1;i<4;i++){
四面体线形图(x,y);
四面体。moveTo(baseX[i-1],baseY[i-1]);
四面体线形图(baseX[i],baseY[i]);
}四面体.closePath();g2d.draw(四面体);
}
公共静态void main(字符串参数[])
{四面体应用=新四面体();
application.setDefaultCloseOperation(在关闭时退出);}

引用自:JAVA如何编程第5版,由Harvey Deitel、Paul Deitel编写

您能再描述一下吗?这是要求其他人做您的家庭作业吗?请提供有关您尝试过的内容以及您迄今为止咨询过哪些资源的信息。您迄今为止做过什么吗?这是一个很好的坏建议示例。不要覆盖顶级容器(如
JFrame
)的
paint
,而是使用
JPanel
或其他方法,覆盖它的
paintComponent
方法
JFrame
不是双缓冲的,您有可能在框架装饰下进行绘画。您还应该在事件调度线程的上下文中创建UI,以防止其他问题您似乎忘记了从您的示例中删除行号,无论您在哪里复制它from@MadProgrammer参考Harvey Deitel编写的JAVA how to program第5版,几个月前我提到的Paul Deitel,以及为什么不应该覆盖
JFrame
paint
,以及