1

嗨,我正在制作一个使用空布局和 setBounds() 方法进行布局的 Gui 程序。在程序中,我希望在屏幕上随机位置打印出 25 个字符串。我知道我可以使用 for 循环来做到这一点,但是我一直在尝试这样做无济于事。

public void paint(Graphics g){
    super.paint(g);
    for(i=0;i<25;i++){
        g.drawString("string name",Math.random()*250,Math.random()*250);
        g.setColor(Color.RED);
    }
}

我一直在尝试这个并且它没有工作所以我的问题是有没有更好的方法来做到这一点,或者我是否犯了某种明显的错误。

4

1 回答 1

2

您没有正确使用 Math.random() 部分,请尝试以下操作:

import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author David
 */
public class JavaApplication142 extends JFrame {

    private int width = 300, height = 300;

    public JavaApplication142() {
        createAndShowUI();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JavaApplication142 jApp = new JavaApplication142();
            }
        });
    }

    private void createAndShowUI() {
        setTitle("Painting");
        setSize(width, height);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        addComponentsToContentPane(getContentPane());
        setVisible(true);
    }

    private void addComponentsToContentPane(Container contentPane) {
        Panel panel1 = new Panel();
        contentPane.add(panel1);
    }

    class Panel extends JPanel {

        private Random rand;

        public Panel() {
            rand = new Random();
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            for (int i = 0; i < 25; i++) {
                g.drawString("string name", (int) rand.nextInt(width), (int) rand.nextInt(height));
                g.setColor(Color.RED);
            }
        }
    }
}

这将有助于在面板区域内绘制所有字符串,尽管长度不同的字符串可能会离开屏幕,只需添加一些额外的代码来检查字符串的长度并适当地设置其坐标

于 2012-06-15T14:11:32.687 回答