日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 玻璃效果_JavaFX中的磨砂玻璃效果?

發布時間:2023/12/8 java 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 玻璃效果_JavaFX中的磨砂玻璃效果? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

樣品溶液

運行下面的程序并向上滾動或向上滑動以顯示玻璃窗格.

該計劃的目的只是為了對所涉及的技術進行抽樣,而不是充當霜凍效應的通用庫.

import javafx.animation.*;

import javafx.application.Application;

import javafx.beans.property.*;

import javafx.geometry.Rectangle2D;

import javafx.scene.*;

import javafx.scene.Node;

import javafx.scene.control.Label;

import javafx.scene.effect.*;

import javafx.scene.image.*;

import javafx.scene.input.ScrollEvent;

import javafx.scene.layout.*;

import javafx.scene.paint.Color;

import javafx.scene.shape.Rectangle;

import javafx.stage.Stage;

import javafx.util.Duration;

// slides a frost pane in on scroll or swipe up; slides it out on scroll or swipe down.

public class Frosty extends Application {

private static final double W = 330;

private static final double H = 590;

private static final double BLUR_AMOUNT = 60;

private static final Duration SLIDE_DURATION = Duration.seconds(0.4);

private static final double UPPER_SLIDE_POSITION = 100;

private static final Effect frostEffect =

new BoxBlur(BLUR_AMOUNT, BLUR_AMOUNT, 3);

@Override public void start(Stage stage) {

DoubleProperty y = new SimpleDoubleProperty(H);

Node background = createBackground();

Node frost = freeze(background, y);

Node content = createContent();

content.setVisible(false);

Scene scene = new Scene(

new StackPane(

background,

frost,

content

)

);

stage.setScene(scene);

stage.show();

addSlideHandlers(y, content, scene);

}

// create a background node to be frozen over.

private Node createBackground() {

Image backgroundImage = new Image(

getClass().getResourceAsStream("ios-screenshot.png")

);

ImageView background = new ImageView(backgroundImage);

Rectangle2D viewport = new Rectangle2D(0, 0, W, H);

background.setViewport(viewport);

return background;

}

// create some content to be displayed on top of the frozen glass panel.

private Label createContent() {

Label label = new Label("The overlaid text is clear and the background below is frosty.");

label.setStyle("-fx-font-size: 25px; -fx-text-fill: midnightblue;");

label.setEffect(new Glow());

label.setMaxWidth(W - 20);

label.setWrapText(true);

return label;

}

// add handlers to slide the glass panel in and out.

private void addSlideHandlers(DoubleProperty y, Node content, Scene scene) {

Timeline slideIn = new Timeline(

new KeyFrame(

SLIDE_DURATION,

new KeyValue(

y,

UPPER_SLIDE_POSITION

)

)

);

slideIn.setOnFinished(e -> content.setVisible(true));

Timeline slideOut = new Timeline(

new KeyFrame(

SLIDE_DURATION,

new KeyValue(

y,

H

)

)

);

scene.setOnSwipeUp(e -> {

slideOut.stop();

slideIn.play();

});

scene.setOnSwipeDown(e -> {

slideIn.stop();

slideOut.play();

content.setVisible(false);

});

// scroll handler isn't necessary if you have a touch screen.

scene.setOnScroll((ScrollEvent e) -> {

if (e.getDeltaY() < 0) {

slideOut.stop();

slideIn.play();

} else {

slideIn.stop();

slideOut.play();

content.setVisible(false);

}

});

}

// create a frosty pane from a background node.

private StackPane freeze(Node background, DoubleProperty y) {

Image frostImage = background.snapshot(

new SnapshotParameters(),

null

);

ImageView frost = new ImageView(frostImage);

Rectangle filler = new Rectangle(0, 0, W, H);

filler.setFill(Color.AZURE);

Pane frostPane = new Pane(frost);

frostPane.setEffect(frostEffect);

StackPane frostView = new StackPane(

filler,

frostPane

);

Rectangle clipShape = new Rectangle(0, y.get(), W, H);

frostView.setClip(clipShape);

clipShape.yProperty().bind(y);

return frostView;

}

public static void main(String[] args) { launch(args); }

}

來源圖片

將此圖像與Java源并行保存為名為ios-screenshot.png的文件,并讓構建系統將其復制到目標目錄,以獲取構建的二進制輸出.

其他問題的答案

“JDK 8,” would that happen to be a requirement of this?

上面的示例代碼是針對JDK 8編寫的.通過將lambda調用替換為匿名內部類將其移植回JDK 7非常簡單.

一般來說,Java 7對于JavaFX工作來說非常過時.我建議您盡早升級以使用Java 8最低版本.

initiating your Panes with arguments

大多數父節點的更方便的構造函數是Java 8 feature.您可以輕松轉換Java 8格式:

StackPane stack = new StackPane(child1, child2);

到Java 7:

StackPane stack = new StackPane();

stack.getChildren().setAll(child1, child2);

will this working if the desktop is behind a frosty pane?

不是直接的,你可以為此創建一個新問題.

更新:相關問題

總結

以上是生活随笔為你收集整理的java 玻璃效果_JavaFX中的磨砂玻璃效果?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。