加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JavaFX FXMLLoader无效的属性

发布时间:2020-12-15 04:17:16 所属栏目:Java 来源:网络整理
导读:我正在寻找在Swing上下文中使用F XML的 JavaFX 2的一点帮助.我使用Scene Builder构建了一个场景(版本:2.0-b10,变更集:48fc80a12d33),我试图在Java 1.7下将其加载到Swing中的JFrame上的JFXPanel中.当我这样做时,我在第16行得到一个无效属性错误.这是第16行
我正在寻找在Swing上下文中使用F XML的 JavaFX 2的一点帮助.我使用Scene Builder构建了一个场景(版本:2.0-b10,变更集:48fc80a12d33),我试图在Java 1.7下将其加载到Swing中的JFrame上的JFXPanel中.当我这样做时,我在第16行得到一个无效属性错误.这是第16行:< Label style =“ - fx-font-weight:bold;” text =“存储概述主页”VBox.vgrow =“从不”>

这是整个场景:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.chart.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="600.0" minWidth="800.0" prefHeight="768.0" prefWidth="1024.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <children>
        <BorderPane layoutX="54.0" layoutY="45.0" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <left>
                <VBox fx:id="" prefHeight="726.0" prefWidth="210.0" style="-fx-background-color: #dee8f6;">
                    <children>
                        <Label style="-fx-font-weight: bold;" text="Storage Overview Home" VBox.vgrow="NEVER">
                            <padding>
                                <Insets bottom="18.0" left="6.0" top="6.0" />
                            </padding>
                        </Label>
                        <ComboBox fx:id="ASPCombo" prefWidth="150.0" VBox.vgrow="NEVER" xmlns:fx="http://javafx.com/fxml">
                            <VBox.margin>
                                <Insets bottom="12.0" left="6.0" />
                            </VBox.margin>
                        </ComboBox>
                        <Label text="Job Information" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <padding>
                                <Insets bottom="12.0" left="6.0" />
                            </padding>
                        </Label>
                        <Hyperlink fx:id="activeJobStatusLink" style="-fx-text-fill: #210B61;" text="Active Job Status" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                        <Hyperlink fx:id="jobMonitorThresholdLink" style="-fx-text-fill: #210B61;" text="Job Monitor Threshold History" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                        <Hyperlink fx:id="jobQtempThresholdLink" style="-fx-text-fill: #210B61;" text="Job QTEMP Threshold History" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                        <Hyperlink fx:id="jobSpooledFileThresholdLink" style="-fx-text-fill: #210B61;" text="Job Spooled File Threshold History" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                        <StackPane prefHeight="150.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
                        <Label text="See Also">
                            <padding>
                                <Insets bottom="6.0" left="12.0" />
                            </padding>
                        </Label>
                        <Hyperlink fx:id="collectionHistoryLink" style="-fx-text-fill: #210B61;" text="Collection History" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                        <Hyperlink fx:id="currentStorageLink" style="-fx-text-fill: #210B61;" text="Current Storage" VBox.vgrow="NEVER" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <VBox.margin>
                                <Insets bottom="12.0" left="12.0" />
                            </VBox.margin>
                        </Hyperlink>
                    </children>
                </VBox>
            </left>
            <top>
                <ToolBar prefWidth="200.0" xmlns:fx="http://javafx.com/fxml">
                    <items>
                        <Button fx:id="btnRefresh" mnemonicParsing="false" text="Back" />
                        <HBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
                            <children>
                                <Pane HBox.hgrow="ALWAYS" />
                            </children>
                        </HBox>
                        <Button mnemonicParsing="false" text="Refresh" />
                    </items>
                </ToolBar>
            </top>
            <center>
                <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: #FFFFFF;">
                    <children>
                        <VBox minHeight="-Infinity" prefHeight="136.0" prefWidth="766.0" VBox.vgrow="NEVER">
                            <children>
                                <Label fx:id="storageOverviewTitle" style="-fx-font-size: 18; -fx-text-fill: #0000FF;" text="Identify and Solve Disk Storage Problems" VBox.vgrow="NEVER">
                                    <textFill>
                                        <Color blue="1.0" />
                                    </textFill>
                                </Label>
                                <TextArea fx:id="storageOverviewTextArea" editable="false" prefHeight="100.0" prefWidth="200.0" text="The Storage Overview helps you quickly identify and solve disk storage problems. Most surges in disk use are caused by active jobs. For example,a server communication job can devour a large amount of your unprotected storage space. And,these jobs can be hard to find.  Use the ASP Threshold History and Job Temp Storage History buttons to display the ASPs and jobs that have exceeded their thresholds. Use the Active Jobs Status button to find and hold or end the job(s) causing a disk storage problem." wrapText="true" VBox.vgrow="NEVER" />
                            </children>
                            <VBox.margin>
                                <Insets bottom="24.0" left="24.0" right="24.0" top="24.0" />
                            </VBox.margin>
                        </VBox>
                        <HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="177.0" prefWidth="814.0" VBox.vgrow="NEVER">
                            <children>
                                <PieChart fx:id="totalASPUtilizationPieChart" title="Total ASP Utilization" HBox.hgrow="NEVER" />
                                <PieChart fx:id="utilizationByLibraryPieChart" title="By Library" HBox.hgrow="NEVER" />
                                <PieChart fx:id="utilizationByIFSDirPieChart" title="By IFS Directory" HBox.hgrow="NEVER" />
                            </children>
                        </HBox>
                        <AreaChart fx:id="ASPUtilizationHistoryAreaChart" title="Utilization History - ASP 001" VBox.vgrow="ALWAYS">
                            <xAxis>
                                <CategoryAxis side="BOTTOM" />
                            </xAxis>
                            <yAxis>
                                <NumberAxis side="LEFT" />
                            </yAxis>
                        </AreaChart>
                    </children>
                </VBox>
            </center>
        </BorderPane>
    </children>
</AnchorPane>

我用来尝试显示场景图的代码是:

Platform.setImplicitExit(false);
Platform.runLater(new Runnable() {
    @Override
    public void run() {
        Parent root;
        try {
            root = FXMLLoader.load(getClass().getResource("MyPanel.fxml"));
            Scene scene = new Scene(root);
            swingPanel.setScene(scene);
        } catch (Exception ex){
            //Log an error here...
        }
    }
});

我得到的错误是:

Invalid property.
/C:/HelpSys/space/trunk/gui/classes/com/helpsystems/space/gui/csi/MyPanel.fxml:16
  at javafx.fxml.FXMLLoader$PropertyElement.<init>(FXMLLoader.java:1154)
  at javafx.fxml.FXMLLoader.createElement(FXMLLoader.java:2338)
  at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2311)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2744)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2723)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2709)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2696)
  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2685)
  at com.helpsystems.space.gui.csi.CSIWizzard$1.run(CSIWizzard.java:182)
  at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
  at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
  at java.security.AccessController.doPrivileged(Native Method)
  at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
  at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
  at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
  at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
  at java.lang.Thread.run(Unknown Source)

解决方法

padding属性不是JavaFX 2.2中Label中的有效属性.在JavaFX 8中,Label继承自Region(通过Control),因此继承了padding属性.所以我怀疑SceneBuilder正在查看JavaFX 8以确定属性.

在JavaFX 2.2中有一个labelPadding属性,可以从CSS设置,所以使用

<Label style="-fx-font-weight: bold; -fx-label-padding: 6 0 18 6;" text="Storage Overview Home"
    VBox.vgrow="NEVER">

</Label>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读