java图形界面倒计时效果怎么实现

   2025-02-13 6920
核心提示:在Java图形界面中实现倒计时效果,可以使用Swing或JavaFX库来创建界面和计时器。使用Swing库:创建一个JFrame窗体对象。在窗体中

在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");        EventHandler<ActionEvent> eventHandler = 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库选择其中一种方式进行实现。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言