簡體   English   中英

JavaFX Scene Builder定制選項卡

[英]JavaFX Scene Builder custom tab

我已經為JavaFX創建了自己的自定義控件。 當我手動將其添加到FXML文件中時,它運行良好。 當我嘗試導入它時,它對於Java Scene Builder是“不可見的”。 因此,我有下一個代碼(極其簡化的版本): 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。 導入時僅出現一個錯誤“不是節點:tafm.javafx.controls.MyTab.class”,並且沒有可用的MyTab控件。

然后,將此類(與fxml一起)更改為:

public class MyTab extends HBox

(僅用於測試目的)。 它已成功加載到SB! 因此,據我了解,不可能創建自己的“標簽”。 是真的嗎 當然,我可以手動編輯fxml文件,但是我想在SB中進行。 是否存在一些解決方法?

JavaFX中的Tab不從Node繼承。 從收到的消息中也很清楚。

所有自定義控件都必須是場景圖的一部分,即基於Node 最好所有自定義控件都繼承自Control ,這將簡化並標准化其開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM