swing/awt fillrect循环,prng不随机显示?

f3temu5u  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(237)

我有个问题想不通。我试着在屏幕上随机显示一堆框,但是它好像只在一行中显示框。就好像它们排成一行,而不是随机显示,即使我记录的值是超级随机的。
以下是它目前的样子:
形象
这是我的 JPanel 用于绘制方框的扩展名:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class CustomComponent extends JPanel {

    private Color[] colors = {Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY,Color.GRAY,Color.GREEN, Color.LIGHT_GRAY,Color.MAGENTA,Color.ORANGE, Color.PINK, Color.RED, Color.YELLOW};

    double r;
    double maxWidth     = 2000;
    double maxHeight    = 2000;
    double width        = maxWidth;
    double height       = maxHeight;

    public CustomComponent() {
        setMaximumSize(new Dimension((int) maxWidth,(int) maxHeight));
        setPreferredSize(new Dimension((int) maxWidth,(int) maxHeight));
    }

     protected void paintComponent(Graphics g) {
         super.paintComponent(g);

         int count = 0;
         while (count < 50) {
             r = Math.random();
             g.setColor(colors[(int)(colors.length * r)]);
             g.fillRect((int) (1000*r), (int) (1000*r), (int) (1000*r), (int) (1000*r));
             count++;
         }
      }
}

这个 CustomComponent 此处使用:

public JPanel northComponent() {
        JPanel panel = new JPanel();
        CustomComponent j = new CustomComponent();
        panel.add(j);
        return panel;
    }

我用的是布局管理器 BorderLayout 面板对象位于北方的位置。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题