在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毫秒更新窗口的位置,使其向下和向右移動。當窗口到達屏幕邊緣時,我們將其重置到初始位置。