我正在我的大学学习 java 课程,我有一个期末项目,当按下 Jbutton 时我必须启动动画。我有一个菜单类和一个动画类。我可以从菜单类中的任何位置播放动画,除非我从动作侦听器播放动画,然后代码运行但动画不显示。这是一个物理模拟,所以我可以看到我打印出来的所有数学都在终端中运行,但帧一直保持空白,直到动画的最后一帧。
我正在使用提供给我们的名为“Standard Draw”的绘图和动画库,它似乎也使用了 Swing。我尝试过不同类型的听众,但它不起作用。有没有人有什么建议?
StdDraw 链接:https ://introcs.cs.princeton.edu/java/stdlib/StdDraw.java.html
这些是我认为我目前使用的代码的相关部分是:(
在类菜单中)
new MouseListener() {
public void mousePressed(MouseEvent e) {
started();
};
public void mouseReleased(MouseEvent e) {};
public void mouseClicked(MouseEvent e) {};
public void mouseEntered(MouseEvent e) {
start.setBackground(Color.blue);
};
public void mouseExited(MouseEvent e) {
start.setBackground(Color.red);
};
--------------------------------------------------------------------------------------------------------
public static void started(){
getNums();
try{
clicked = false;
N = Integer.parseInt(n);
M = Double.parseDouble(m);
L = Double.parseDouble(l);
A = Double.parseDouble(a);
f.dispose();
pend = new Pendulum(N, M, L, A);
}
catch(Exception NumberFormatException){
clicked = false;
error();
}
}
(在类摆)
public Pendulum(int N, double m, double l, double a) {
input(N, m, l, a);
canvas();
animate();
}
--------------------------------------------------------------------------------------------------------
public static void animate(){
StdDraw.enableDoubleBuffering();
for (double t = 0; t < 100; t += FRAME_T/1000.0) {
...(ALL OF MY MATH AND DRAWING)...
StdDraw.show();
StdDraw.pause(FRAME_T);
StdDraw.clear();
}
StdDraw.disableDoubleBuffering();
}