在Java图形界面中实现倒计时效果,可以使用Swing或JavaFX库来创建界面和计时器。
- 使用Swing库:
- 创建一个JFrame窗体对象。
- 在窗体中添加一个JLabel组件来显示倒计时时间。
- 创建一个Timer对象来实现倒计时功能,并在每次计时结束时更新JLabel的文本。
- 设置窗体的大小、可见性等属性,并监听窗体的关闭事件来停止计时器。
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CountdownTimer extends JFrame { private JLabel countdownLabel; private Timer timer; private int countdown; public CountdownTimer(int countdown) { this.countdown = countdown; countdownLabel = new JLabel(String.valueOf(countdown), SwingConstants.CENTER); countdownLabel.setFont(new Font("Arial", Font.BOLD, 48)); timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { countdown--; countdownLabel.setText(String.valueOf(countdown)); if (countdown <= 0) { timer.stop(); JOptionPane.showMessageDialog(null, "倒计时结束!"); } } }); add(countdownLabel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 200); setVisible(true); timer.start(); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new CountdownTimer(10); } }); } }
- 使用JavaFX库:
- 创建一个Stage对象作为窗口容器。
- 添加一个Label组件来显示倒计时时间。
- 创建一个Timeline对象来实现倒计时功能,并在每次计时结束时更新Label的文本。
- 设置Stage的大小、标题等属性,并监听窗口关闭事件来停止计时器。
import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import javafx.util.Duration; public class CountdownTimer extends Application { private Label countdownLabel; private Timeline timeline; private int countdown; @Override public void start(Stage primaryStage) { countdown = 10; countdownLabel = new Label(String.valueOf(countdown)); countdownLabel.setStyle("-fx-font-size: 48px"); EventHandlereventHandler = e -> { countdown--; countdownLabel.setText(String.valueOf(countdown)); if (countdown <= 0) { timeline.stop(); primaryStage.close(); System.out.println("倒计时结束!"); } }; timeline = new Timeline(new KeyFrame(Duration.seconds(1), eventHandler)); timeline.setCycleCount(countdown); StackPane root = new StackPane(); root.getChildren().add(countdownLabel); Scene scene = new Scene(root, 300, 200); primaryStage.setTitle("倒计时"); primaryStage.setScene(scene); primaryStage.show(); timeline.play(); } public static void main(String[] args) { launch(args); } }
以上是两种常用的在Java图形界面中实现倒计时效果的方法,根据具体需求和使用的GUI库选择其中一种方式进行实现。