java - 生成随机图形 + 关于学习 Java 的问题
问题描述
在任何事情之前:当您尝试学习编码时,可以向 Stack Overflow 提交问题吗?我真的在这个问题上投入了大约 20 个小时并且完全陷入困境,但如果我仍然坚持了解如何制定自己的解决方案,请说出 Stack Overlords 这个词。
我正在尝试创建一个函数,该函数创建十个半随机大小和位置以及随机颜色的圆圈。
大小和位置是半随机的,因为圆的半径必须在 5 - 50 像素之间;位置必须在Jpanel
.
颜色可以是任何东西。圈子的生产必须在十点停止,所有圈子必须同时静止Jpanel
。
除了能够让十个圆圈在它们生成后保持静止之外,我几乎完全解决了这个问题Jpanel
。
我尝试在我认为可以产生所需结果的代码的各个部分周围应用基本的 for 循环。我的 for 循环如下所示。
for(int i = 0; i < 10; ++i) {
}
package assignment3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import javax.swing.JFrame;
public class Random_Circles extends JPanel{
private static final long serialVersionUID = 1L;
// Below is the input for our random size.
public static int RandomSize() {
double randomDouble = Math.random();
randomDouble = randomDouble * 50 + 1;
int randomInt = (int) randomDouble;
return randomInt;
}
// Below is the input for our random X-coordinate.
public static int RandomPosition1() {
double randomDouble = Math.random();
randomDouble = randomDouble * 900 + 1;
int randomInt = (int) randomDouble;
return randomInt;
}
// Below is the input for our random Y-coordinate.
public static int RandomPosition2() {
double randomDouble = Math.random();
randomDouble = randomDouble * 400 + 1;
int randomInt = (int) randomDouble;
return randomInt;
}
// I don't really know what this does, but I've gotta do it apparently.
Random rand = new Random();
// Below is the input for our random color.
public void paintComponent(Graphics RC) {
super.paintComponent(RC);
this.setBackground(Color.white);
// Random Size
int RS;
RS = RandomSize();
// X-coordinate
int RP1;
RP1 = RandomPosition1();
// Y-coordinate
int RP2;
RP2 = RandomPosition2();
// Color inputs
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Color randomColor = new Color(r, g, b);
// Color function
RC.setColor(randomColor);
// Location and size function
RC.fillOval(RP1, RP2, RS, RS);
}
}
产生 Jpanel 的主函数,调用之前的代码。
package assignment3;
import javax.swing.JFrame;
import assignment3.Random_Circles;
public class Random_Circles_Exe {
public static void main(String[] args) {
JFrame f = new JFrame("Random Cirlces");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Random_Circles r = new Random_Circles();
f.add(r);
f.setSize(1000,500);
f.setVisible(true);
}
}
预期:10 个带有所需参数的圆圈出现并保留在JPanel
.
实际:函数运行的第二次生成十个圆圈,但每个新圆圈都会过期。通过重新调整大小JPanel
(只需单击并拖动其边框),会生成更多圆圈。
解决方案
推荐阅读
- grails - 从 grails 2.x 升级到 grails 3.x 时的问题
- angular - 如何在 Angular 的 Promise 中链接错误
- mysql - 小部件内的内容数据库 - wordpress 存储在哪里?
- c# - 解析Json失败
- reactjs - 如何根据其他道具的值设置 defaultProp 值?
- python-3.x - python中的克鲁斯卡尔算法
- javascript - 如何获取由 php while 循环创建的点击值
- javascript - 需要从html声明的ID中自动生成document.getbyElementID的ID
- javascript - 创建多个可控定时器
- autodesk-forge - 通过 Forge API 上传链接的 revit 文件后如何获取所有 3D 和 2D 交付?