gpt4 book ai didi

java - 使用 Swing 在 Java 中绘制多个矩形

转载 作者:行者123 更新时间:2023-11-30 07:19:53 25 4
gpt4 key购买 nike

我有密码

import java.awt.*;
import javax.swing.*;

public class MondrianPanel extends JPanel
{
public MondrianPanel()
{
setPreferredSize(new Dimension(200, 600));
}

public void paintComponent(Graphics g) {
for(int i = 0; i < 20; i++) {
paint(g);
}
}

public void paint(Graphics g)
{
Color c = new Color((int)Math.random()*255, (int)Math.random()*255, (int)Math.random()*255);
g.setColor(c);
g.fillRect((int)Math.random()*200, (int)Math.random()*600, (int)Math.random()*40, (int)Math.random()*40);
}

}

我想让它做的是在屏幕上的随机位置绘制一堆随机着色的矩形。但是,当我运行它时,我只得到一个灰色框。我正在阅读这个问题 Drawing multiple lines with Java Swing并且我发现您应该有一个 paintComponent 多次调用 paint 并且我尝试调整我的代码以适应它,但它仍然不起作用。

最佳答案

这里最大的问题是 (int) Math.random() * something 总是 0。那是因为转换首先执行并且是 0 然后乘以某个东西仍然是 0

它应该是这样的:(int) (Math.random() * something)

然后,您应该将 paint(Graphics g) 重命名为 draw(Graphics g),否则您将以错误的方式覆盖 paint .

下面的代码可以正常工作:

public class TestPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < 20; i++) {
draw(g);
}
}

public void draw(Graphics g) {
Color c = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
g.setColor(c);
g.fillRect((int) (Math.random() * 400), (int) (Math.random() * 300), (int) (Math.random() * 40), (int) (Math.random() * 40));
}

public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(new TestPanel(), BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 300);
f.setVisible(true);
}
}

关于java - 使用 Swing 在 Java 中绘制多个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343825/

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