gpt4 book ai didi

java - 使用类中的简单 Applet

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:45 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com