这是很多都是借鉴别人的。
用Button实现关闭Icon,最小化Icon,最大化Icon
public class TestButton extends Application {
double width = 600;
double height = 300;
Stage stage;
double offsetX;
double offsetY;
@Override
public void start(Stage stage) throws Exception {
VBox root = new VBox();
init(root);
Scene scene = new Scene(root, width, height);
scene.getStylesheets().add(getClass().getResource("dialogs.css").toExternalForm());
Stage subStage = new Stage(StageStyle.TRANSPARENT);
subStage.initOwner(stage);
subStage.setScene(scene);
subStage.show();
this.stage = subStage;
}
public void init(VBox root) {
HBox box = new HBox(10);
ToolBar tb = new ToolBar();
Button closeButton = createButton("close");
closeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
stage.close();
}
});
Button minimizeButton = createButton("minimize");
minimizeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
stage.setIconified(!stage.isIconified());
}
});
Button maximizeButton = createButton("maximize");
maximizeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
stage.setFullScreen(true);
}
});
box.getChildren().addAll(minimizeButton,maximizeButton,closeButton);
Region region = new Region();
HBox.setHgrow(region, Priority.ALWAYS);
tb.getItems().addAll(region,box);
tb.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
offsetX = event.getSceneX();
offsetY = event.getSceneY();
}
});
tb.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
stage.setX(event.getScreenX()-offsetX);
stage.setY(event.getScreenY()-offsetY);
}
});
HBox center = new HBox();
center.setStyle("-fx-background-color: #949494");
VBox.setVgrow(center, Priority.ALWAYS);
root.getChildren().addAll(tb,center);
}
public Button createButton(String name){
StackPane graphic = new StackPane();
graphic.getStyleClass().setAll("graphic");
Button button = new Button();
button.getStyleClass().setAll("window-button");
button.getStyleClass().add("window-"+name+"-button");
button.setGraphic(graphic);
button.setMinSize(17, 17);
button.setPrefSize(17, 17);
return button;
}
public static void main(String args[]) {
launch();
}
}
.window-button {
-fx-skin: "com.sun.javafx.scene.control.skin.ButtonSkin";
-fx-background-color: transparent transparent;
-fx-background-insets: 0, 1;
-fx-background-radius: 2;
-fx-padding: 0 0 0 0;
-fx-alignment: center;
}
.window-button:hover {
-fx-background-color: linear-gradient(#505050,#2d2d2d),
linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
}
.window-button:pressed {
-fx-background-color: linear-gradient(#515151,#202020),
linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
}
.window-button .graphic {
-fx-background-color: #949494;
-fx-scale-shape: false;
-fx-padding: 4.5 4.5 4.5 4.5; /* Graphic is 9x9 px */
}
.window-button:hover .graphic {
-fx-background-color: #fefeff;
}
.window-button:pressed .graphic {
-fx-background-color: #cfcfcf;
}
.window-close-button .graphic {
-fx-shape: "M395.992,296.758l1.794-1.794l7.292,7.292l-1.795,1.794 L395.992,296.758z M403.256,294.992l1.794,1.794l-7.292,7.292l-1.794-1.795 L403.256,294.992z";
}
.window-minimize-button .graphic {
-fx-shape: "M420.012,299.248v2.537h-9.001v-2.537H420.012z";
}
.window-maximize-button .graphic {
-fx-shape: "M406.283,294.985h2.537v9.031h-2.538L406.283,294.985z M412.012,298.248v2.537h-9.001v-2.537H412.012z";
}
分页Button
工具栏ToolBar
这里有个javafx学习的中文网站,我把内容都丢那上面去了。
http://www.jfxee.com/
- 大小: 1.9 KB
- 大小: 1.4 KB
- 大小: 3.6 KB
分享到:
相关推荐
Pagination, javaFx 源代码分页功能较少,该代码组件支持首页、上一页、下一页、尾页、跳转、每页数量等操作,同时展示总数据量,使用教程搜索博客:《JavaFx 自定义封装 Pagination 分页组件、控件》
在IT领域,自定义工具栏是一项重要的用户界面(UI)设计功能,它允许用户根据自己的需求和偏好调整软件的工作环境。在本示例中,我们关注的是“自定义浮动工具栏”,这是一种特定类型的工具栏,它不仅可以固定在屏幕...
springboot-javafx-support 文档地址:https://springboot-javafx-support.readthedocs.io/en/latest/ 集成参考:https://segmentfault.com/a/1190000014037443
本文将详细介绍如何在JavaFX2中使用自定义字体,并通过一个简单的示例——`CustomFontApp`来阐述整个过程。 首先,你需要获取第三方字体文件,通常为`.ttf`(TrueType Font)或`.otf`(OpenType Font)格式。这些文件...
本项目为JavaFx平台下的自定义UI组件设计源码,汇集了110个Java源文件、27个CSS样式文件、24个PNG图片资源、18个JavaScript脚本文件、5个XML配置文件、3个GIF动画文件、2个字体文件(ttf)、2个JPEG图片文件、2个...
随着JavaFX的持续发展,它已经成为Java开发者构建现代化图形用户界面(GUI)的重要工具,尤其在Java SE和Java EE环境中。本资料集包含了最新的JavaFX学习资源,旨在帮助开发者掌握这一强大的技术,以应对日益增长的...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的Java库。它提供了丰富的用户界面组件、强大的图形...通过学习和掌握JavaFX,开发者可以充分利用其丰富的特性,创建出具有吸引力和交互性的应用程序。
javaFx 学习--之布局菜单
总的来说,“基于JAVAFX的钢琴小工具”展示了JavaFX在创建富互联网应用程序中的强大能力,结合了图形用户界面设计、音频处理、事件处理和动画技术,提供了一种趣味性的学习和娱乐体验。通过深入理解这些知识点,...
### JavaFX 学习资源与核心知识点概览 #### 一、JavaFX 概述 JavaFX 是一个用于创建丰富客户端应用的平台,它支持创建跨平台的应用程序,包括桌面应用和嵌入式系统。JavaFX 提供了一个强大的场景图 API,允许...
对于Java开发者来说,深入研究`FxMarkdownEditor`的源码,不仅可以学习到如何使用JavaFX构建桌面应用,还可以了解到如何处理Markdown解析和渲染,甚至可能涉及自定义JavaFX组件或事件处理机制。这对于提升JavaFX和...
颜色选择器和工具栏是画图板工具的常见功能。JavaFX提供各种UI组件,如ComboBox用于颜色选择,ToolBar可以容纳不同的绘图工具按钮。我们还需要实现这些组件与绘图行为之间的绑定,确保用户选择的颜色和工具能在画布...
JavaFX教程;JavaFX教程;JavaFX教程JavaFX教程;
本压缩包“Java生成自定义控件源代码.7z”中包含的文件很可能是一系列示例代码,帮助开发者学习如何在Java环境中创建自定义控件。 首先,理解Java中的控件(Components):在Swing中,JComponent类是所有可绘制用户...
JavaFX学习曲线日记
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的开源图形用户界面(GUI)工具包。它是Oracle JDK的一部分,但在Java 11之后作为独立的模块发布。这个"JavaFX学习之样例8"可能是一个教程或示例...
在这30个工具栏源码中,你可以深入研究每个工具栏的构建方式,包括如何添加按钮、如何响应用户点击、如何自定义布局和样式等。这不仅可以帮助初学者掌握基本的GUI编程技巧,对于有经验的开发者来说,也是借鉴和学习...