首页 > 解决方案 > 生成随机图形 + 关于学习 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(只需单击并拖动其边框),会生成更多圆圈。

标签: javaswingfor-loopgraphicsjpanel

解决方案


推荐阅读