0
我想創建通知窗口是鼠標透明的階段和桌面。
問題
彈出沒有mousetransparent功能。當彈出窗口顯示時,您必須等到它消失才能訪問它後面的內容。
問題
是否有可能創建通知彈出窗口(或其他窗口),其中有一個的點擊機制?它應該適用於桌面上的彈出窗口和桌面上的彈出窗口。
代碼
下面是當你點擊該按鈕這將創建一個通知示例代碼。彈出消失3秒後。之後,你可以再次點擊按鈕。
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Popup;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Notification extends Application {
static double width = 800;
static double height = 600;
static int counter = 0;
Stage stage;
@Override
public void start(Stage stage) {
this.stage = stage;
// content area
StackPane root = new StackPane();
root.setStyle("-fx-background-color:white");
// button which shows a popup
Button notificationButton = new Button("Add Popup");
notificationButton.setOnAction(e -> {
addNotification("This is notification nr. " + (++counter));
});
root.getChildren().add(notificationButton);
Scene scene = new Scene(root, width, height);
stage.setScene(scene);
stage.show();
}
private void addNotification(String message) {
// create popup content
Label messageLabel = new Label(message);
final StackPane content = new StackPane();
content.setPrefSize(200, 200);
content.setStyle("-fx-background-color:lightgrey");
content.setOpacity(0.5);
content.setMouseTransparent(true);
content.getChildren().addAll(messageLabel);
// create popup and show it
final Popup popup = new Popup();
popup.setX(stage.getX() + (stage.getScene().getWidth() - 200)/2);
popup.setY(stage.getY() + (stage.getScene().getHeight() - 200)/2);
popup.getContent().add(content);
popup.show(stage.getScene().getWindow());
// hide popup after 3 seconds
Duration displayDuration = Duration.millis(3000);
KeyFrame displayDurationKeyFrame = new KeyFrame(displayDuration);
Timeline timeline = new Timeline(displayDurationKeyFrame);
timeline.setOnFinished(e -> {
popup.hide();
});
timeline.play();
}
public static void main(String[] args) {
launch(args);
}
}
謝謝你,但它似乎並沒有在Windows 7上的Java 8u65工作。相同的效果,彈出塊。然而,在新的階段還有另一個問題:當用戶e。 G。類型,而你顯示一個彈出窗口,新的階段獲得焦點。它應該只顯示通知,但用戶應該可以繼續輸入。 – Roland
我編輯了原始代碼。一探究竟! – Marian
謝謝,現在的重點工作,但主要問題仍然存在。我仍然無法點擊按鈕,直到彈出消失。這對你真的有用嗎?你使用的是什麼系統和Java版本? – Roland