0

我正在我的大学学习 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();

   }
4

0 回答 0