Javafx 2 在JavaFX中检测设计时
是否有一种方法可以检测JavaFX2中的设计时间,这种方法可以在SceneBuilder中使用?类似于:Javafx 2 在JavaFX中检测设计时,javafx-2,Javafx 2,是否有一种方法可以检测JavaFX2中的设计时间,这种方法可以在SceneBuilder中使用?类似于: java.beans.Beans.isDesignTime() 秋千?我正在开发应该在SceneBuilder中显示的自定义控件。但是,触发器类NotFoundException中的一些代码。我不想添加所需的库,而是想绕过触发该异常的代码 [更新] 我会告诉你我将要完成什么。我扩展了输入控件组件(textfield、combobox等)并添加了propertyName属性。我还创建了一个F
java.beans.Beans.isDesignTime()
秋千?我正在开发应该在SceneBuilder中显示的自定义控件。但是,触发器类NotFoundException中的一些代码。我不想添加所需的库,而是想绕过触发该异常的代码
[更新]
我会告诉你我将要完成什么。我扩展了输入控件组件(textfield、combobox等)并添加了propertyName属性。我还创建了一个FormExtends面板,它将扫描其中的输入控件,并根据propertName为它们赋值。该值取自设置为表单的POJO。我使用ApacheCommonsBeanutls将值分配给输入控件,因此我需要提供BeanUtilsJAR的类路径
如果我自动激活该功能,我就不能在SceneBuilder中使用表单。因为表单将检测其中的输入控件并执行赋值,因此需要库。我决定停用该功能,并为程序员提供一种方法来激活它。这不是我想要的,但我想我别无选择。FXML始终是设计时。如果您使用FXML设计控件,然后在其控制器中设计所有逻辑和事件处理,那么您可以免费获得此功能。FXML始终是设计时。如果您使用FXML设计控件,然后在其控制器中设计所有逻辑和事件处理,那么您可以免费获得这些功能。JavaFX控件没有这样的设计时间 相反,控制代码需要遵循几个简单的规则,如本答案中所述 从邮件列表线程引用: 在SceneBuilder 1.0中,尚无法将自定义控件添加到 SceneBuilder的库面板。但是,可以加载 包含自定义控件的FXML。这在SceneBuilder的 用户指南-请参见此处有关自定义类型元素的部分: 请注意,为了能够加载包含自定义元素的FXML 在SceneBuilder中,该自定义元素必须“行为良好”
我的猜测是,通过使用自定义控件,而不是产品的1.0版本,您将获得对自定义控件的最佳支持。JavaFX控件没有这样的设计时间 相反,控制代码需要遵循几个简单的规则,如本答案中所述 从邮件列表线程引用: 在SceneBuilder 1.0中,尚无法将自定义控件添加到 SceneBuilder的库面板。但是,可以加载 包含自定义控件的FXML。这在SceneBuilder的 用户指南-请参见此处有关自定义类型元素的部分: 请注意,为了能够加载包含自定义元素的FXML 在SceneBuilder中,该自定义元素必须“行为良好”
我的猜测是,通过使用自定义控件,而不是产品的1.0版本,您将获得对自定义控件的最佳支持。您可以使用此类:
public class SceneBuilderHelper
{
public static boolean isSceneBuilder()
{
try
{
Class.forName("com.oracle.javafx.scenebuilder.app.SceneBuilderApp");
return true;
}
catch (ClassNotFoundException e)
{
}
return false;
}
}
在代码中,您可以执行以下操作:
if (!SceneBuilderHelper.isSceneBuilder())
{
// do things that should not be done in SceneBuilder
}
您可以使用这个类:
public class SceneBuilderHelper
{
public static boolean isSceneBuilder()
{
try
{
Class.forName("com.oracle.javafx.scenebuilder.app.SceneBuilderApp");
return true;
}
catch (ClassNotFoundException e)
{
}
return false;
}
}
在代码中,您可以执行以下操作:
if (!SceneBuilderHelper.isSceneBuilder())
{
// do things that should not be done in SceneBuilder
}