Control,Skin,behavior
在javaFX中每一个UI组件都由一个Control,Skin,behavior组成。首先创建一个Control类继承javafx.scene.control.Control,它持有组件的属性,并且作为主的class,也就是说由它实例化,并且被加到父节点中。skin则负责展示,而behavior负责交互。
如果组件只需要展示而没有交互,则只需要简单的创建behavior,因此只需要继承com.sun.javafx.scene.control.behavior.BehaviorBase。
public class MyCustomControlBehavior extends BehaviorBase { public MyCustomControlBehavior(MyCustomControl control) { super(control); } }
创建一个skin,继承com.sun.javafx.scene.control.skin.BaseSkin,在此类中展示和布局子节点。
public class MyCustomControlSkin extends SkinBase{ public MyCustomControlSkin(MyCustomControl control) { super(control, new MyCustomControlBehavior(control)); } }
创建一个control
public class MyCustomControlSkin extends SkinBase{ public MyCustomControlSkin(MyCustomControl control) { super(control, new MyCustomControlBehavior(control)); } }
3个类创建了,那它们是如何关联的了。从上面可以看到skin可以知道control和behavior,此时只需要让control关联skin。
使用css关联
.custom-control {
-fx-skin: "com.guigarage.customcontrol.MyCustomControlSkin"; }
此时需要在control中加载css
public class MyCustomControl extends Control { public MyCustomControl() { getStyleClass().add("custom-control"); } @Override protected String getUserAgentStylesheet() { return MyCustomControl.class.getResource("customcontrol.css").toExternalForm(); } }
或者直接设置
setSkinClassName(MyControlSkin.class.getName());
可以看到下面这张图,它们之间如何互相引用。
在controler.getSkin()的时候是获得的skin,所以需要转化一下才能得到behavior
((SkinBase)getSkin()).getBehavior();
原文地址
http://www.guigarage.com/2012/11/custom-ui-controls-with-javafx-part-1/
- 大小: 50.7 KB
- 大小: 70.7 KB
分享到:
相关推荐
本压缩包“Java生成自定义控件源代码.7z”中包含的文件很可能是一系列示例代码,帮助开发者学习如何在Java环境中创建自定义控件。 首先,理解Java中的控件(Components):在Swing中,JComponent类是所有可绘制用户...
5. **样式和皮肤**:JavaFX2允许你自定义控件的外观和行为。`DatePicker`的皮肤可以通过`setSkin`方法更改,样式可以通过CSS来定制。 6. **JUnit测试**:“junit.java”可能是用来测试`DatePicker`功能的。JUnit是...
JavaFX是一款强大的图形用户界面(GUI)工具包,主要用于创建桌面应用。在JavaFX中,开发者可以利用丰富的组件库来构建具有吸引力的交互式应用程序。...记得查阅项目文件,以便更深入地学习和定制你的JavaFX日历控件。
首先,了解Java Swing和JavaFX是生成自定义控件的基础。Swing是Java的一个图形用户界面(GUI)工具包,而JavaFX则提供了更现代的、基于CSS样式的GUI构建能力。两者都支持组件的继承和重写,使得创建自定义控件成为...
本压缩包“基于java的生成自定义控件源代码.zip”显然包含了与创建自定义Java GUI控件相关的源代码示例,可能是为了帮助学习者理解和实践这一过程。以下将详细探讨Java中生成自定义控件的相关知识点。 1. **Java ...
自定义控件通常是在现有组件的基础上进行扩展,继承自Java Swing或JavaFX的相关类,如JComponent或Node。 在Swing中,我们通常会从JComponent类派生出一个新的类来创建自定义控件。JComponent类提供了许多方法和...
本资源“基于Java的生成自定义控件源代码.zip”显然提供了一系列用于学习和实践这个主题的代码示例。下面我们将详细探讨Java中自定义控件的创建过程及其相关知识点。 首先,Java提供了丰富的内置控件,如按钮...
首先,理解Java中的Swing和JavaFX是创建自定义控件的基础。Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更多的组件和更现代的外观。JavaFX则是一个用于构建桌面、Web和移动应用程序的现代图形库,它...
JavaFX中的日期时间选择控件,来自于github开源项目https://github.com/taipeiben/DateTimePicker,这个是自己打包的jar
Pagination, javaFx 源代码分页功能较少,该代码组件支持首页、上一页、下一页、尾页、跳转、每页数量等操作,同时展示总数据量,使用教程搜索博客:《JavaFx 自定义封装 Pagination 分页组件、控件》
绑定到 Work.State 属性时显示不同节点的自定义 JavaFX 控件。 每个 Work.State 属性都有默认的彩色形状 可以在 FXML 中覆盖任何或所有默认状态节点 用于绑定的示例 Java 代码... . . . workStateIndicator . ...
JavaFX自定义控件该项目将展示有关如何在JavaFX中创建自定义控件的不同方法。 它将涵盖以下方法: 重新设置现有控件的样式合并现有控件扩展现有控件创建一个基于区域的自定义控件创建一个控件+基于外观的自定义控件...
5. Android/AndroidX:Android系统中,可以使用XML布局和Java/Kotlin代码自定义控件。 四、关键功能 1. 日期验证:确保用户输入的有效性,如检查日期是否在有效范围内。 2. 日期格式化:按照特定格式展示日期,如...
自定义阶段 JavaFX未经修饰的阶段,可以完全定制 捐献 如果这个项目对您有所帮助,并且热爱我的工作,并且喜欢表达爱意和欣赏,您想给我买杯咖啡吗? 实现 提供的其他工具(v1.3.0之后) 请查看以获取更多示例和...
JavaFX 是一个用于创建桌面应用、移动应用以及嵌入式系统的强大的Java图形用户界面(GUI)框架。...在实际开发过程中,还会涉及到动画、自定义控件和场景图的深入使用,这些都是JavaFX添加动态特性的重要组成部分。
6. **自定义控件** JavaFX允许开发者创建自己的控件,通过继承现有的控件类或从Node类开始构建。这使得开发者可以构建独特且符合项目需求的界面元素。 7. **实用工具** 压缩包中的实用工具可能包括帮助开发者更...
在JavaFX中,开发者可以利用丰富的图形用户界面(GUI)...通过深入学习并实践这些基本控件,开发者可以构建出功能丰富、用户友好的JavaFX应用程序。在NetBeans的辅助下,学习和使用JavaFX+FXML会变得更加高效和便捷。
此外,控件还可以有自定义的皮肤,提供不同的视觉效果。 4. **事件处理**:JavaFX提供了丰富的事件处理机制,包括鼠标和键盘事件,使得用户交互变得简单易行。 5. **FXML**:FXML是一种XML格式,用于描述JavaFX...
这个"JavaFX学习之样例8"可能是一个教程或示例集合,用于教授如何使用JavaFX来创建一个特定的图形元素,比如时钟。在这个例子中,我们可能将学习如何利用JavaFX的图形和动画功能来构建一个可交互的模拟时钟。 首先...
首先,Java中的自定义控件通常基于已有的Java Swing或JavaFX组件进行扩展。Swing是Java的标准GUI库,而JavaFX提供更现代、更丰富的图形效果。在这个实例中,我们可能会看到如何使用Swing或JavaFX中的JComponent或...