闲来无事做些小玩意
做这个之前先阅读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(); } }
图片存放位置:
实现效果: