JavaFX Scene Builder 自定义选项卡
JavaFX Scene Builder custom tab
我已经为 JavaFX 创建了自己的自定义控件。当我将它手动添加到 FXML 文件中时,它运行良好。当我尝试导入它时,它是 Java Scene Builder 的 "invisible"。所以,我有下一个代码(极其简化的版本):
MyTab.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.* ?>
<?import tafm.javafx.controls.MyTab?>
<fx:root type="javafx.scene.control.Tab" xmlns:fx="http://javafx.com/fxml">
</fx:root>
MyTab.java
package tafm.javafx.controls;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Tab;
import java.io.IOException;
public class MyTab extends Tab {
public MyTab() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyTab.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
fxmlLoader.setClassLoader(getClass().getClassLoader());
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
}
我已经用这个控件构建了一个 jar 文件并尝试将其导入 JavaFX Scene Builder 2.0。导入时出现一个错误 "Not a node: tafm.javafx.controls.MyTab.class",并且没有可用的 MyTab 控件。
然后我将此 class(连同 fxml)更改为:
public class MyTab extends HBox
(仅用于测试目的)。成功加载到SB!
因此,据我了解,不可能创建自己的 "Tab"。是真的吗?
当然,我可以手动编辑 fxml 文件,但我想在 SB 中进行。是否存在一些解决方法?
我已经为 JavaFX 创建了自己的自定义控件。当我将它手动添加到 FXML 文件中时,它运行良好。当我尝试导入它时,它是 Java Scene Builder 的 "invisible"。所以,我有下一个代码(极其简化的版本): MyTab.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.* ?>
<?import tafm.javafx.controls.MyTab?>
<fx:root type="javafx.scene.control.Tab" xmlns:fx="http://javafx.com/fxml">
</fx:root>
MyTab.java
package tafm.javafx.controls;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Tab;
import java.io.IOException;
public class MyTab extends Tab {
public MyTab() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyTab.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
fxmlLoader.setClassLoader(getClass().getClassLoader());
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
}
我已经用这个控件构建了一个 jar 文件并尝试将其导入 JavaFX Scene Builder 2.0。导入时出现一个错误 "Not a node: tafm.javafx.controls.MyTab.class",并且没有可用的 MyTab 控件。
然后我将此 class(连同 fxml)更改为:
public class MyTab extends HBox
(仅用于测试目的)。成功加载到SB! 因此,据我了解,不可能创建自己的 "Tab"。是真的吗? 当然,我可以手动编辑 fxml 文件,但我想在 SB 中进行。是否存在一些解决方法?