中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java圖形界面倒計時效果怎么實現

小億
145
2023-12-16 13:01:52
欄目: 編程語言

在Java圖形界面中實現倒計時效果,可以使用Swing或JavaFX庫來創建界面和計時器。

  1. 使用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);
            }
        });
    }
}
  1. 使用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庫選擇其中一種方式進行實現。

0
女性| 广饶县| 卢氏县| 凤翔县| 隆德县| 上饶市| 肥东县| 漾濞| 古蔺县| 肇源县| 泾源县| 台南县| 库车县| 许昌市| 黄平县| 弥渡县| 吉隆县| 固镇县| 达日县| 利川市| 孝义市| 博客| 新昌县| 武川县| 红安县| 正宁县| 古蔺县| 大荔县| 双柏县| 会理县| 武功县| 和田市| 安西县| 阿坝县| 潍坊市| 宁德市| 新源县| 商洛市| 白水县| 普安县| 福鼎市|