zoukankan      html  css  js  c++  java
  • JavaFx全屏时钟显示

    闲来无事做些小玩意

    做这个之前先阅读SpringBoot整合JavaFx

    showTime.fxml:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.text.*?>
    <?import javafx.geometry.*?>
    <?import javafx.scene.control.*?>
    <?import java.lang.*?>
    <?import javafx.scene.layout.*?>
    
    
    <?import javafx.scene.image.ImageView?>
    <BorderPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"
                xmlns="http://javafx.com/javafx/8"
                xmlns:fx="http://javafx.com/fxml/1"
                fx:controller="com.maxinhai.diary.controller.ShowTimeController">
       <!--ImageView被遮挡应该将ImageView放在最顶层容器-->
       <ImageView fx:id="imageView">
          <image>
          </image>
       </ImageView>
       <center>
          <Label fx:id="message"
                 alignment="CENTER"
                 contentDisplay="CENTER"
                 prefHeight="400.0" prefWidth="601.0"
                 opacity="0.5"
                 text="" textAlignment="CENTER"
                 BorderPane.alignment="CENTER"
          >
             <BorderPane.margin>
                <Insets />
             </BorderPane.margin>
             <font>
                <Font name="System Bold Italic" size="96.0" />
             </font>
             <opaqueInsets>
                <Insets />
             </opaqueInsets>
          </Label>
       </center>
    </BorderPane>

    ShowTimeFxmlView:

    import de.felixroske.jfxsupport.AbstractFxmlView;
    import de.felixroske.jfxsupport.FXMLView;
    
    @FXMLView(value = "/fxml/showTime.fxml",title = "showTime",bundle = "i18n.index",encoding = "utf-8")
    public class ShowTimeFxmlView extends AbstractFxmlView {
    }

    ShowTimeController:

    import com.maxinhai.diary.DiaryApplication;
    import de.felixroske.jfxsupport.FXMLController;
    import javafx.application.Platform;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Label;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    
    import java.net.URL;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.ResourceBundle;
    
    /**
     * 时钟显示
     */
    @FXMLController
    public class ShowTimeController implements Initializable {
    
        @FXML
        public Label message;
        @FXML
        public ImageView imageView;
    
        @FXML
        public void setContent(String content) {
            message.setText(content);
        }
    
        @Override
        public void initialize(URL location, ResourceBundle resources) {
            Image image = new Image("image/mv.jpg");
            imageView.setImage(image);
            imageView.setDisable(false);
    
            // 使图片宽度、高度随窗口变化而变化
            DiaryApplication.getScene().heightProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    imageView.setFitHeight(newValue.doubleValue());
                }
            });
            DiaryApplication.getScene().widthProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    imageView.setFitWidth(newValue.doubleValue());
                }
            });
            // 使Label大小随窗口大小变化而变化
            DiaryApplication.getStage().widthProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    message.setPrefWidth(newValue.doubleValue());
                }
            });
            DiaryApplication.getStage().heightProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                    message.setPrefHeight(newValue.doubleValue());
                }
            });
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd
    HH:mm:ss");
            setContent(sdf.format(new Date()));
    // 创建一个线程,每隔1秒更新一下Label里的内容
    new Thread(()-> { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 更新UI线程 Platform.runLater(()-> { message.setText(sdf.format(new Date())); }); } }).start(); } }

    图片存放位置:

    实现效果:

  • 相关阅读:
    解决vs code 内置终端,字体间隔过大问题。(linux centos7 ubuntu成功)
    安装Epson打印机但因lsb依赖错误而中断的驱动程序
    ubuntu 权限不够,解决办法,无法获得锁 /var/lib/dpkg/lock
    ubuntu 安装WPS
    GNU GRUB引导的默认启动项是ubuntu
    网络编程基础
    反射、特殊双下方法、单例模式
    异常处理
    封装、多态、类的约束、类的私有成员
    多继承、经典类与新式类、新式类的C3算法详解
  • 原文地址:https://www.cnblogs.com/mxh-java/p/14319282.html
Copyright © 2011-2022 走看看