0

我正在学习用 Java 编程,并且正在创建我的第一个 GUI 应用程序。它关于创建 100 个随机数。我首先在 cmd 上这样做:

public class RandomNumbers {

public static void main(String[] args){

        float n = 100;
        float m = 1513;
        float a = 19713;
        float x = 177963;
        float c = 1397;
        float r;
        float i;

        for(i=0;i<=n;i++){
            r = (a*x+c)%m;
            x = r;
            r = r/m;

            System.out.println(r);
        }
    }
}

出于某种原因,当我尝试在文本区域上打印 100 个随机数时,它只打印我一个。这是代码:

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class GUIRandomNumbers extends JFrame implements ActionListener{

        public JTextArea area;
    public JScrollPane scroll;
    public JButton button;

    public RandomNumbers(){
        setLayout(null);
        area = new JTextArea();
        area.setEditable(false);
        scroll = new JScrollPane(area);
        scroll.setBounds(10, 10, 400, 300);
        add(scroll);

        button = new JButton("Generate");
        button.setBounds(10, 650, 100, 25);
        add(button);
        button.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e){
        float n = 100;
        float m = 1513;
        float a = 19713;
        float x = 177963;
        float c = 1397;
        float r;
        float i;
        if(e.getSource()==button){
            for(i=0;i<=n;i++){
                r = (a*x+c)%m;
                x = r;
                r = r/m;

                area.setText(String.valueOf(r));
            }

        }
    }


    public static void main(String[] args) {


        RandomNumbers p1 = new RandomNumbers();
        p1.setBounds(0, 0, 500, 750);
        p1.setVisible(true);

    }   

}

可能是什么问题呢?我真的很感激你的帮助。

提前致谢。

4

4 回答 4

5

当你这样做时

area.setText(String.valueOf(r));

它用新文本覆盖文本区域上的文本。

你应该使用

area.append(String);

代替方法。

于 2013-10-07T18:58:36.380 回答
3

用这个

area.append(String.valueOf(r) + "\n\r");

代替

area.setText(String.valueOf(r));
于 2013-10-07T19:10:19.777 回答
2

setText(String) method replace the previous text. Use area.append(String) method.

Accordint to docs

Appends the given text to the end of the document. Does nothing if the model is null or the string is null or empty.

于 2013-10-07T18:53:53.680 回答
0

起初我想你的意思是

 GUIRandomNumbers p1 = new GUIRandomNumbers();

让你只看到一个数字的原因是一个数字写在另一个数字之上。我的意思是你在 textArea 中写了 100 次随机数!

area.append("text"); 是可以完成工作的方法!

于 2013-10-07T19:04:27.443 回答