增加提示框

This commit is contained in:
许轲 2023-09-30 06:17:40 +08:00
parent c7c27d785a
commit c547a29b46
5 changed files with 58 additions and 5 deletions

View File

@ -168,6 +168,7 @@ public class ApplicationManager {
RootRightSideBarVerticalBoxManager.getInstance().initRootRightSideBarVerticalBox(); RootRightSideBarVerticalBoxManager.getInstance().initRootRightSideBarVerticalBox();
// 初始化根布局 // 初始化根布局
RootBorderPaneManager.getInstance().initRootBorderPane(); RootBorderPaneManager.getInstance().initRootBorderPane();
} }
public Pane getRoot() { public Pane getRoot() {

View File

@ -43,5 +43,6 @@ public class RootBorderPaneManager {
rootBorderPane.setTopComponent(RootTopBorderPane.getInstance()); rootBorderPane.setTopComponent(RootTopBorderPane.getInstance());
// 主界面的下面底部边栏 // 主界面的下面底部边栏
rootBorderPane.setBottomComponent(RootBottomSideBarVerticalBox.getInstance()); rootBorderPane.setBottomComponent(RootBottomSideBarVerticalBox.getInstance());
} }
} }

View File

@ -1,7 +1,15 @@
package org.jcnc.jnotepad.views.manager; package org.jcnc.jnotepad.views.manager;
import atlantafx.base.controls.Notification;
import atlantafx.base.theme.Styles;
import atlantafx.base.util.Animations;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;
import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.views.root.RootBorderPane; import org.jcnc.jnotepad.views.root.RootBorderPane;
@ -15,7 +23,7 @@ import org.jcnc.jnotepad.views.root.RootBorderPane;
public class RootManager { public class RootManager {
private static RootManager instance = null; private static RootManager instance = null;
StackPane rootStackPane;
/** /**
* 主布局 * 主布局
*/ */
@ -65,11 +73,42 @@ public class RootManager {
* @param scene 与视图相关联的 JavaFX 场景 * @param scene 与视图相关联的 JavaFX 场景
*/ */
public void initScreen(Scene scene) { public void initScreen(Scene scene) {
rootStackPane = new StackPane();
// 创建主界面布局 // 创建主界面布局
root = new BorderPane(); BorderPane root = new BorderPane();
root.setCenter(RootBorderPane.getInstance()); root.setCenter(RootBorderPane.getInstance());
scene.setRoot(root); rootStackPane.getChildren().addAll(root);
scene.setRoot(rootStackPane);
} }
/**
* 将提示框添加到 StackPane
*
* @param stackPane 要添加提示框的 StackPane
* @param msg 要显示的提示框
*/
public void addNotificationToStackPane(StackPane stackPane, Notification msg) {
msg.getStyleClass().addAll(Styles.ACCENT, Styles.ELEVATED_1);
msg.setPrefHeight(Region.USE_PREF_SIZE);
msg.setMaxHeight(Region.USE_PREF_SIZE);
StackPane.setAlignment(msg, Pos.TOP_RIGHT);
StackPane.setMargin(msg, new Insets(10, 10, 0, 0));
msg.setOnClose(e -> {
var out = Animations.slideOutUp(msg, Duration.millis(250));
out.setOnFinished(f -> stackPane.getChildren().remove(msg));
out.playFromStart();
});
var in = Animations.slideInDown(msg, Duration.millis(250));
if (!stackPane.getChildren().contains(msg)) {
stackPane.getChildren().add(msg);
}
in.playFromStart();
}
} }

View File

@ -1,5 +1,6 @@
package org.jcnc.jnotepad.views.manager; package org.jcnc.jnotepad.views.manager;
import atlantafx.base.controls.Notification;
import atlantafx.base.theme.Styles; import atlantafx.base.theme.Styles;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
@ -227,6 +228,17 @@ public class TopMenuBarManager {
bottomBox.setAlignment(Pos.BOTTOM_RIGHT); bottomBox.setAlignment(Pos.BOTTOM_RIGHT);
leftBtn.setOnAction(event1 -> { leftBtn.setOnAction(event1 -> {
// 获取 RootManager 的实例
RootManager rootManager = RootManager.getInstance();
// 创建一个新的 Notification
Notification notification = new Notification();
notification.setMessage("已成功复制软件信息!");
// 调用 RootManager 中的方法来显示 Notification
rootManager.addNotificationToStackPane(rootManager.rootStackPane, notification);
Clipboard clipboard = Clipboard.getSystemClipboard(); Clipboard clipboard = Clipboard.getSystemClipboard();
ClipboardContent content = new ClipboardContent(); ClipboardContent content = new ClipboardContent();
String info = "软件名字:" + APP_NAME + "\t" + "版本:" + VERSION; String info = "软件名字:" + APP_NAME + "\t" + "版本:" + VERSION;
@ -236,6 +248,7 @@ public class TopMenuBarManager {
// 关闭当前的 Stage // 关闭当前的 Stage
Stage currentStage = (Stage) leftBtn.getScene().getWindow(); Stage currentStage = (Stage) leftBtn.getScene().getWindow();
currentStage.close(); currentStage.close();
}); });
rightBtn.setOnAction(event1 -> { rightBtn.setOnAction(event1 -> {

View File

@ -16,7 +16,6 @@ public class RootBorderPane extends AbstractBorderPane {
private static final RootBorderPane INSTANCE = new RootBorderPane(); private static final RootBorderPane INSTANCE = new RootBorderPane();
private RootBorderPane() { private RootBorderPane() {
} }
/** /**