Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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-Trident动画库-容器大小调整时反射插值_Java_Swing_Animation - Fatal编程技术网

Java-Trident动画库-容器大小调整时反射插值

Java-Trident动画库-容器大小调整时反射插值,java,swing,animation,Java,Swing,Animation,我对Trident动画库很陌生,但我成功地将其用于我的动画,效果非常好 我的要求是基本上从容器的一个角到容器的中间设置JComponent的动画 下面是我的伪代码 this.setLayout(null); JButton button = new JButton(); button.setLocation(new Point (0,0)); Point center = new Point(getWidth()/2, getHeight()/2); Timeline timelin

我对Trident动画库很陌生,但我成功地将其用于我的动画,效果非常好

我的要求是基本上从容器的一个角到容器的中间设置JComponent的动画

下面是我的伪代码

this.setLayout(null);    
JButton button =  new JButton();
button.setLocation(new Point (0,0));
Point center =  new Point(getWidth()/2, getHeight()/2);
Timeline timeline = new Timeline(notification.getComponent());
timeline.addPropertyToInterpolate("location", button .getLocation(), center );
timeline.setDuration(1000);
timeline.play();
现在,当我的容器调整大小时,容器的中心将发生变化。 对于e.x:如果容器的初始中心为100100,并且在容器调整大小后,新中心为200200


有没有什么方法可以在插值时反映新的中心,使组件移动到200200而不是100100?请帮忙。

这是我第一次想到的事情:


在开始时,存储当前窗口/面板大小。在每个时间线上“勾选”检查当前窗口/面板大小是否与ie开始时的大小不同。面板已调整大小。如果已调整大小,请停止当前时间线,并基于新面板中心创建具有新路径的新时间线。

感谢您的帮助。在你给出的答案中,我只有一个问题。时间线持续时间是预定义的值。因此timeline.setDuration1000中的1000ms是预定义的。现在,如果我停止运行时间线并在每次调整容器大小时创建一个新的时间线,我将如何跟踪经过的时间,以便每次调整大小时,我都可以将totaltime elapsedtime传递给我的新时间线持续时间。此外,如果conztiner的大小调整过于频繁,那么停止并创建新的时间线是否是一个好主意。它会不会对应用程序的性能产生太大的影响?正如您所建议的totaltime elapsedtime似乎是个好主意。我建议您编写一个脚本,仅在用户完成调整窗口/面板大小时重新创建时间线,即忽略调整窗口/面板大小期间的所有小步骤。至于性能,只有一种方法可以找到:试试看:-