gpt4 book ai didi

java - 在 Java 中生成多个形状......?

转载 作者:行者123 更新时间:2023-11-29 04:59:30 25 4
gpt4 key购买 nike

如何生成多种类型的形状,如星形、三角形等。我已经运行了代码,它编译并运行时只显示一颗星。 (我想要大约 10 个)在图形用户界面中使用什么函数生成多个形状..?

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Shapes2JPanel extends JPanel {

// draw general paths
public void paintComponent(Graphics g) {
super.paintComponent(g); // call superclass's paintComponent
Random random = new Random(); // get random number generator
Graphics2D g2d = (Graphics2D) g;
int[] xPoints = {55, 67, 109, 73, 83, 55, 27, 37, 1, 43};
int[] yPoints = {0, 36, 36, 54, 96, 72, 96, 54, 36, 36};
GeneralPath star = new GeneralPath();
star.moveTo(xPoints[0], yPoints[0]);
for (int count = 1; count < xPoints.length; count++) {
star.lineTo(xPoints[count], yPoints[count]);
}
star.closePath();
g2d.translate(150, 150);
for (int count = 1; count <= 20; count++) {
g2d.rotate(Math.PI / 10.0);
}
g2d.setColor(new Color(random.nextInt(256),
random.nextInt(256), random.nextInt(256)));
g2d.fill(star);
}

public static void main(String[] args) {
JFrame frame = new JFrame("Drawing 2D Shapes");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Shapes2JPanel shapes2JPanel = new Shapes2JPanel();
frame.add(shapes2JPanel); // add shapes2JPanel to frame
frame.setBackground(Color.WHITE); // set frame background color
frame.setSize(315, 330); // set frame size
frame.setVisible(true); // display frame
} // end main
} // end class Shapes2

最佳答案

您的代码只生成一种形状。如果你想要多个形状,那么你需要创建多个形状。所以:

  1. 不要在 paintComponent() 方法中生成形状。相反,您可能会使用 addStar(...)、addTriangel() 等方法。

  2. 然后您创建一个 ArrayList 来保存这些形状。因此,上面的方法将创建形状,然后将其添加到 ArrayList。

  3. 然后 paintComponent() 方法将遍历 ArrayList 并绘制每个 Shape。

查看 Playing With Shapes用于使用上述方法的基本代码。该链接还将为您提供实用程序类,以轻松创建“星形”和其他有趣的形状。

    for (int count = 1; count <= 20; count++) {
g2d.rotate(Math.PI / 10.0);
}

上面的代码什么也没做。它循环 20 次并更改旋转,但没有绘制任何内容,因此只会使用最后一次旋转。

不要在绘画方法中使用 random(...) 方法。您无法控制 Swing 何时调用绘画方法,因此您的形状会不断随机改变颜色。

关于java - 在 Java 中生成多个形状......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com