在Java中,要实现JFrame窗口动画,可以使用javax.swing.Timer
类来定期更新窗口的位置或大小。以下是一个简单的示例,展示了如何创建一个带有窗口动画的JFrame应用程序:
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class WindowAnimation { public static void main(String[] args) { SwingUtilities.invokeLater(() -> createAnimatedWindow()); } private static void createAnimatedWindow() { JFrame frame = new JFrame("Animated JFrame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); frame.setLocationRelativeTo(null); // 创建一个容器来容纳窗口的内容 Container container = frame.getContentPane(); container.setLayout(new BorderLayout()); // 添加一个按钮作为窗口内容 JButton button = new JButton("Click me!"); container.add(button, BorderLayout.CENTER); // 设置窗口的初始位置 frame.setLocation(100, 100); // 创建一个定时器,每隔100毫秒更新窗口的位置 Timer timer = new Timer(100, new ActionListener() { int x = 100; int y = 100; @Override public void actionPerformed(ActionEvent e) { // 更新窗口的位置 frame.setLocation(x, y); // 增加x和y的值,以便窗口向下和向右移动 x += 5; y += 5; // 如果窗口到达屏幕边缘,重置位置 if (x + frame.getWidth() >= Toolkit.getDefaultToolkit().getScreenSize().width || y + frame.getHeight() >= Toolkit.getDefaultToolkit().getScreenSize().height) { x = 100; y = 100; } } }); // 启动定时器 timer.start(); // 设置窗口为可见 frame.setVisible(true); } }
在这个示例中,我们创建了一个JFrame窗口,并添加了一个按钮。然后,我们使用Timer
类每隔100毫秒更新窗口的位置,使其向下和向右移动。当窗口到达屏幕边缘时,我们将其重置到初始位置。