java - 使用类中的简单 Applet

标签 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();
    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();

};
}

它工作正常并显示随机点。现在,如果我使用另一个类调用该 Applet:

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

它显示相同的数字,但小程序不会持续显示在屏幕上。我怎样才能启用它?我试过定时器,但似乎不起作用。对此有什么想法吗?

谢谢。

编辑。作为有关如何调用 Applet 的问题的答案,以下是该类:

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);
}
}

编辑2:好的,我通过添加找到了一种黑客技巧

try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

就在上面提到的两行之后。看来有效。

最佳答案

你应该使用这个:

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

详细讨论在这里:

JFrame Exit on close Java

在经典应用程序(主)内:应用程序在退出之前等待 JFrame。

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

与 JUNIT:

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

为了防止这种情况:请参阅此:

JUnit - stop it from exiting on finish?

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

关于java - 使用类中的简单 Applet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34088021/

相关文章:

java - 如何正确地将 Apache Commons jar 添加到类路径?

java - 我可以通过 HTML 代码控制小程序字体吗?

javascript - 从客户端 Web 浏览器与串行端口通信。

java - JMenuItems 隐藏在我的 JApplet 后面

java - 如何让进度条 Swing 进度?

java - 是否可以根据页面属性切换到 Sling Selector Script

java - ANDROID:从 Android 软键盘获取按键

Java 到 ASN1 可读字符串

java - 如何循环查找相等的单词

java - 无法引用内部类中的变量