Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX场景生成器自定义选项卡_Java_Javafx 8_Scenebuilder - Fatal编程技术网

JavaFX场景生成器自定义选项卡

JavaFX场景生成器自定义选项卡,java,javafx-8,scenebuilder,Java,Javafx 8,Scenebuilder,我已经为JavaFX创建了自己的自定义控件。当我将它手动添加到FXML文件中时,它运行良好。当我尝试导入Java场景生成器时,它是“不可见的”。因此,我有下一个代码(极其简化的版本): MyTab.fxml <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.* ?> <?import tafm.jav

我已经为JavaFX创建了自己的自定义控件。当我将它手动添加到FXML文件中时,它运行良好。当我尝试导入Java场景生成器时,它是“不可见的”。因此,我有下一个代码(极其简化的版本): 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>
我已经用这个控件构建了一个jar文件,并试图将其导入JavaFX Scene Builder 2.0。导入时只出现一个错误“nota node:tafm.javafx.controls.MyTab.class”,并且没有可用的MyTab控件

然后我将该类(与fxml一起)更改为:

(仅用于测试目的)。它已成功加载到SB中! 因此,据我所知,创建自己的“标签”是不可能的。这是真的吗? 当然,我可以手动编辑fxml文件,但我想在SB中进行编辑。是否存在一些变通方法

JavaFX中的不是从继承的。你得到的信息也很清楚


所有自定义控件都必须是场景图的一部分,即基于。最好是所有自定义控件都继承自,这将简化和标准化它们的开发。

很明显。但是否存在一些变通办法?某人如何工作?它包含控制列表中的选项卡。好的,明白了。在甲骨文团队决定改进某人之前,这是不可能的。
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);
        }
    }
}
public class MyTab extends HBox