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
,以及