JavaFX是用于构建富Internet应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致地运行。 使用JavaFX开发的应用程序可以在各种设备上运行,例如台式计算机,移动电话,电视,平板电脑等。
为了开发具有丰富功能的Client Side Applications ,程序员过去依赖于各种库来添加诸如媒体,UI控件,Web,2D和3D等功能.JavaFX在单个库中包含所有这些功能。
JavaFX提供了丰富的图形和媒体API,并通过硬件加速图形利用现代Graphical Processing Unit 。 JavaFX还提供了接口,开发人员可以使用这些接口组合图形动画和UI控件。
Canvas and Printing API - JavaFX提供了Canvas,一种即时模式的渲染API。 在包javafx.scene.canvas它包含一组canvas类,我们可以使用它直接在JavaFX场景的区域内绘制。 JavaFX还在包javafx.print提供用于打印目的的类。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ijiVRR50-1669731717543)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324204040.png)]
过渡的动画(如填充,淡入淡出,旋转,缩放和平移)的类。JavaFX应用程序生命周期的类。传递和处理JavaFX事件的类和接口。定义2D对象并对其执行操作的类。JavaFX应用程序的顶级容器类。支持场景图的类和接口。 此外,它还提供了子包,如画布,图表,控件,效果,图像,输入,布局,媒体,绘画,形状,文本,转换,Web等。有几个组件支持JavaFX丰富的API 。Scene Builder - JavaFX提供名为Scene Builder的应用程序。 在将此应用程序集成到IDE(例如Eclipse和NetBeans)中时,用户可以访问拖放设计界面,该界面用于开发FXML应用程序(就像Swing Drag&Drop和DreamWeaver应用程序一样)。
可以通过该工具进行GUI可视化拖拽编辑
- IDEA集成教程:https://blog.csdn.net/u011781521/article/details/86632482
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3pB4sfk-1669731717544)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326195015.png)]
TestFX allows developers to write simple assertions to simulate user interactions and verify expected states of JavaFX scene-graph nodes.
在代码中***
javafx.application.Application 类是所有Fx程序的入口,***每一个javaFx程序都可以理解为是一个应用,Fx程序中的自定义类继承并重写其start()类后,便具备了作为当前Fx程序的启动入口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hvuNE3NL-1669731717544)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324204704.png)]
public class Main extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/ita/fxml/mediaplayer.fxml"));BorderPane pane = loader.load();Scene scene = new Scene(pane, 650, 400); //在实例化场景时,必须将根对象传递给场景类的构造函数。primaryStage.setScene(scene); //将场景对象附加到舞台。MediaPlayerController controller = ((MediaPlayerController) loader.getController());// Load Playlist FXML and inject controller/rootFXMLLoader playListLoader = new FXMLLoader(getClass().getResource("/com/ita/fxml/playlist.fxml"));playListLoader.load();controller.injectPlayListController((PlaylistController) playListLoader.getController());controller.injectPlayListRoot(playListLoader.getRoot());bindSize(controller, scene);controller.setStage(primaryStage);primaryStage.show(); // 必须通过show 才会显示场景controller.applyDragAndDropFeatures(scene);}private void bindSize(MediaPlayerController controller, Scene scene){controller.timerSliderWidthProperty().bind(scene.widthProperty().subtract(500));controller.mediaViewWidthProperty().bind(scene.widthProperty());controller.mediaViewHeightProperty().bind(scene.heightProperty().subtract(70));}//start() - 要写入JavaFX图形代码的入口点方法。//stop() - 一个可以被覆盖的空方法,在这里你可以编写停止应用程序的逻辑。//init() - 一个可以被覆盖的空方法,但是你不能在这个方法中创建阶段或场景。public static void main(String[] args) {launch(args);}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xuek36Rd-1669731717544)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324204939.png)]
- Foreground Events - 需要用户直接交互的事件。 它们是作为人与图形用户界面中的图形组件交互的结果而生成的。 例如,单击按钮,移动鼠标,通过键盘输入字符,从列表中选择项目,滚动页面等。
- Background Events - 需要最终用户交互的事件称为后台事件。 操作系统中断,硬件或软件故障,计时器到期,操作完成是后台事件的示例。
Mouse Event - 这是单击鼠标时发生的输入事件。 它由名为MouseEvent的类表示。 它包括鼠标单击,鼠标按下,鼠标释放,鼠标移动,鼠标输入目标,鼠标退出目标等操作。
Key Event - 这是一个输入事件,指示节点上发生的键击。 它由名为KeyEvent的类表示。 此事件包括按下键,释放键和键入键等操作。
Drag Event - 这是拖动鼠标时发生的输入事件。 它由名为DragEvent的类表示。 它包括拖动输入,拖放,拖动输入目标,拖动退出目标,拖动等操作。
Window Event - 这是与窗口显示/隐藏操作相关的事件。 它由名为WindowEvent的类表示。 它包括窗口隐藏,显示窗口,隐藏窗口,窗口显示等操作。
事件传递链
//Creating the mouse event handler
EventHandler eventHandler = new EventHandler() { @Override public void handle(MouseEvent e) { System.out.println("Hello World"); circle.setFill(Color.DARKSLATEBLUE); }
};
//Adding event Filter
Circle.addEventFilter(MouseEvent.MOUSE_CLICKED, eventHandler);//---------注册方法二:
playButton.setOnMouseClicked((new EventHandler() { public void handle(MouseEvent event) { System.out.println("Hello World"); pathTransition.play(); }
}));
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLcIRanV-1669731717545)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324210040.png)]
JavaFX在包javafx.scene.control提供了几个类。 为了创建各种GUI组件(控件),JavaFX支持多种控件,如日期选择器,按钮文本字段等。
| S.No | 控制和描述 |
|---|---|
| 1 | LabelLabel对象是用于放置文本的组件。 |
| 2 | Button该类创建一个带标签的按钮。 |
| 3 | ColorPickerColorPicker提供了一个控件窗格,旨在允许用户操作和选择颜色。 |
| 4 | CheckBoxCheckBox是一个图形组件,可以处于on(true)或off(false)状态。 |
| 5 | RadioButtonRadioButton类是一个图形组件,可以在组中处于ON(true)或OFF(false)状态。 |
| 6 | ListViewListView组件向用户显示文本项的滚动列表。 |
| 7 | TextFieldTextField对象是一个文本组件,允许编辑单行文本。 |
| 8 | PasswordFieldPasswordField对象是专门用于输入密码的文本组件。 |
| 9 | ScrollbarScrollbar控件表示滚动条组件,以便用户可以从值范围中进行选择。 |
| 10 | FileChooserFileChooser控件表示用户可以从中选择文件的对话窗口。 |
| 11 | ProgressBar随着任务进展完成,进度条显示任务的完成百分比。 |
| 12 | Slider滑块允许用户通过在有界区间内滑动旋钮以图形方式选择值。 |
通常,图表是数据的图形表示。 有各种各样的图表来表示数据,如Bar Chart, Pie Chart, Line Chart, Scatter Chart,等。JavaFX支持各种Pie Charts和XY Charts 。 在XY平面上表示的图表包括AreaChart, BarChart, BubbleChart, LineChart, ScatterChart, StackedAreaChart, StackedBarChart,等。每个图表由一个类表示,所有这些图表都属于包javafx.scene.chart 。 名为Chart的类是JavaFX中所有图表的基类, XYChart是在XY平面上绘制的所有图表的基类。
| S.No | 形状和描述 |
|---|---|
| 1 | HBoxHBox布局将应用程序中的所有节点排列在一个水平行中。包javafx.scene.layout名为HBox的类表示文本水平框布局。 |
| 2 | VBoxVBox布局将我们应用程序中的所有节点排列在一个垂直列中。包javafx.scene.layout名为VBox的类表示文本垂直框布局。 |
| 3 | BorderPane边框窗格布局将应用程序中的节点排列在顶部,左侧,右侧,底部和中心位置。包javafx.scene.layout名为BorderPane的类表示边框窗格布局。 |
| 4 | StackPane堆栈窗格布局将应用程序中的节点排列在另一个上面,就像在堆栈中一样。 首先添加的节点位于堆栈的底部,下一个节点位于堆栈的顶部。包javafx.scene.layout名为StackPane的类表示堆栈窗格布局。 |
| 5 | TextFlow文本流布局在单个流中排列多个文本节点。包javafx.scene.layout名为TextFlow的类表示文本流布局。 |
| 6 | AnchorPane“锚点”窗格布局将应用程序中的节点锚定在距窗格特定距离处。包javafx.scene.layout名为AnchorPane的类表示Anchor窗格布局。 |
| 7 | TilePaneTile窗格布局以均匀大小的tile的形式添加应用程序的所有节点。包javafx.scene.layout名为TilePane的类表示TilePane布局。 |
| 8 | GridPane网格窗格布局将应用程序中的节点排列为行和列的网格。 使用JavaFX创建表单时,此布局非常方便。包javafx.scene.layout名为GridPane的类表示GridPane布局。 |
| 9 | FlowPane流窗格布局包装流中的所有节点。 水平流动窗格将窗格的元素包裹在其高度,而垂直流动窗格将元素包裹在其宽度处。名为FlowPane的类javafx.scene.layout表示Flow Pane布局。 |
//添加自己的样式表
Scene scene = new Scene(new Group(), 500, 400);
scene.getStylesheets().add("path/stylesheet.css");
//添加内联样式表
.button { -fx-background-color: red; -fx-text-fill: white;
}
- Done ✔️
- Support almost all audio formats through smart converting to .mp3
- Amazing Audio Spectrum Visualizers
- Audio Amplitudes Waveform
- Chromium Web Browser
- Full Dropbox access
- Multiple User Accounts
- Configurable via multiple settings
- Advanced Tag Editor
- File Organizer and Explorer
- Multiple Libraries/Playlists support
- System monitor ( CPU , RAM )
- Audio Effects and Filters
- TODO 🚧
- XR3Player is actively developed. More features will come!
- Support all audio file formats by default
- Support all video file formats by default
- Speech Recongition
- Smart AI Assistant
- Online Subscription website
- Android and IOS applications


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9ym1W1Z-1669731717546)(https://camo.githubusercontent.com/cb983c05cd402e70b436e27d6e8a3d4850e2fc14f531dafd77027252bc9e8203/68747470733a2f2f692e696d6775722e636f6d2f686459466a34642e676966)]
src/main├──java├── controllers├──Screen1controller.java├──Screen2controller.java├── service├──Service1.java├── dao(persist)├── SaveProducts.java├──resources├──view├──screen1.fxml├──screen2.fxml├──css├──style.css├──images├──img1.jpg├──img2.jpg
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oBU3SgH1-1669731717546)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324215744.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WjdjFoA-1669731717547)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210324215823.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UH1lGJEY-1669731717547)(https://github.com/MonicaTanios/octillect/raw/gh-pages/assets/drag-and-filter.gif?raw=true)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhDrMABE-1669731717547)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326195314.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jkock8eJ-1669731717548)(https://gitee.com/github-25970295/blogImage/raw/master/img/Package model.png)]
Intellij IDEA ‘Error:java: 无效的源发行版:13’
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-haemqxbw-1669731717549)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326093757.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvGRjQ2K-1669731717549)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326093819.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7eEKrKJ-1669731717550)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326093845.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaEPpjEQ-1669731717551)(https://gitee.com/github-25970295/blogImage/raw/master/img/20210326093916.png)]