Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用类中的简单小程序_Java_Japplet - Fatal编程技术网

Java 使用类中的简单小程序

Java 使用类中的简单小程序,java,japplet,Java,Japplet,我有一个简单的问题,我创建了一个小程序来显示一些结果: public class Plot2D extends JApplet { public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.red); Dimension size = getSize(); Insets insets = getInsets();

我有一个简单的问题,我创建了一个小程序来显示一些结果:

public class Plot2D extends JApplet {

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.setColor(Color.red);
    Dimension size = getSize();
    Insets insets = getInsets();
    int w = size.width - insets.left - insets.right;
    int h = size.height - insets.top - insets.bottom;
    Random r = new Random();

    for (int i = 0; i < 1000; i++) {
        int x = Math.abs(r.nextInt()) % w;
        int y = Math.abs(r.nextInt()) % h;
        g2d.drawLine(x, y, x, y);
    }
}

public void main(String[] args) {
    JFrame frame = new JFrame("Points");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    // Timer timer = new Timer(2000, new ActionListener() {
    // @Override
    // public void actionPerformed(ActionEvent e) {
    frame.add(new Plot2D());
    frame.setSize(200, 200);
    frame.setResizable(false);
    frame.setVisible(true);
    // }
    // });
    // timer.setRepeats(true);
    // timer.start();

};
}
它显示相同的图形,但小程序不会持续显示在屏幕上。我怎样才能做到这一点?我试过计时器,它似乎不起作用。有什么想法吗

多谢各位

编辑。作为对小程序如何调用的问题的回答,以下是课堂:

public class PedestrianSpawnerTest {

//  @Before
//  public void initialise(){
//      frame = new JFrame("Points");
//  }



public void test() {

    int numberOfPedestrians = 10;

    PedestrianSpawner pedestrianSpawner = new PedestrianSpawner();

    pedestrianSpawner.SpawnRandomlyStandardPedestrians(numberOfPedestrians);

    List<StandardPedestrian> listOfPedestrians = pedestrianSpawner
            .getListOfPedestrians();

    for (int i = 0; i < listOfPedestrians.size(); i++) {
        System.out.println(listOfPedestrians.get(i).getId());
        System.out.println(listOfPedestrians.get(i).getPosition());
        System.out.println(listOfPedestrians.get(i).getVelocity());
        System.out.println(listOfPedestrians.get(i).getTarget());
    }


    Plot2D plotting = new Plot2D();
    plotting.main(null);
}
}

就在上面提到的两行之后。这似乎很有效。

您应该改用这个:

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
详细讨论如下:

在经典应用程序(main)中:应用程序在退出之前等待JFrame

或者您可以使用System.exit()关闭所有内容

对于JUNIT:

JUNIT在测试结束时关闭所有GUI(通过exit()

有关防止此情况的信息:请参见:


例如,如果您阻止JUNIT完成(只需使用无限循环附加一个测试),并且您以特定顺序启动测试(在类之前使用@FixMethodOrder(MethodSorters.NAME\u升序)),它应该可以工作。

您应该改为使用它:

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
详细讨论如下:

在经典应用程序(main)中:应用程序在退出之前等待JFrame

或者您可以使用System.exit()关闭所有内容

对于JUNIT:

JUNIT在测试结束时关闭所有GUI(通过exit()

有关防止此情况的信息:请参见:


例如,如果您阻止JUNIT完成(只需使用无限循环附加一个测试),并且您以特定的顺序启动测试(在类之前使用@FixMethodOrder(MethodSorters.NAME\u升序),它应该可以工作。

您认为“小程序不在屏幕上持续”是什么意思?它消失了吗?它在屏幕上打印,但马上就消失了。当我运行Applet本身时(没有从类中调用它),它会在屏幕上打印并一直保持在屏幕上,直到我关闭它。这有意义吗?不,不是真的。。。你能给我们看看你的另一个班级吗,你从哪里打电话来的?我尝试了你的代码,从另一个类调用,只有一个main方法,它工作得非常好…好的,我已经发布了一个关于它的编辑。谢谢你的帮助。你说的“小程序不能在屏幕上持续”是什么意思?它消失了吗?它在屏幕上打印,但马上就消失了。当我运行Applet本身时(没有从类中调用它),它会在屏幕上打印并一直保持在屏幕上,直到我关闭它。这有意义吗?不,不是真的。。。你能给我们看看你的另一个班级吗,你从哪里打电话来的?我尝试了你的代码,从另一个类调用,只有一个main方法,它工作得非常好…好的,我已经发布了一个关于它的编辑。谢谢你的帮助。嗯,没什么区别。我尝试了各种近距离的行动,但没有真正成功。但是谢谢你的帖子。我没有同样的行为。事实上,在所有情况下,直接或通过其他类,JFrame保留并挂起程序的结尾。我必须执行系统。退出(0);您能描述一下您的环境吗,它是如何命名的?是的,当然,我正在使用Eclipse。在单元测试中调用小程序。我测试了几个类,它们现在返回随机数,我想在屏幕上显示它们。返回结果后,我通过上面描述的两行调用Applet,只是为了检查我做的事情是否正确。明白了吗?好的,我试试看。让我看看。谢谢,好吧,但也不行。但更接近于答案。嗯,确实没有区别。我尝试了各种近距离的行动,但没有真正成功。但是谢谢你的帖子。我没有同样的行为。事实上,在所有情况下,直接或通过其他类,JFrame保留并挂起程序的结尾。我必须执行系统。退出(0);您能描述一下您的环境吗,它是如何命名的?是的,当然,我正在使用Eclipse。在单元测试中调用小程序。我测试了几个类,它们现在返回随机数,我想在屏幕上显示它们。返回结果后,我通过上面描述的两行调用Applet,只是为了检查我做的事情是否正确。明白了吗?好的,我试试看。让我看看。谢谢,好吧,但也不行。但更接近答案。
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);