我正在玩JavaFX。在Scene Builder中,当Eclipse运行时,它看起来像这样:
何时,我将其导出为Runnable Jar。把它放在我的桌面上,这就是我得到的:
为什么?
我使用Java 7在Mac OSX上。
这是代码:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<children>
<TabPane prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab text="Untitled Tab 1">
<content>
<AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<Button layoutX="103.0" layoutY="65.0" mnemonicParsing="false" text="Button" />
<Button layoutX="103.0" layoutY="110.0" mnemonicParsing="false" prefHeight="37.0" prefWidth="121.0" text="Button" />
<CheckBox layoutX="103.0" layoutY="166.0" mnemonicParsing="false" text="CheckBox" />
<ChoiceBox layoutX="103.0" layoutY="201.0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Item 1" />
<String fx:value="Item 2" />
<String fx:value="Item 3" />
</FXCollections>
</items>
</ChoiceBox>
<MenuBar prefWidth="600.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
<ProgressBar layoutX="100.0" layoutY="249.0" prefWidth="200.0" progress="0.45" />
<ProgressIndicator layoutX="397.0" layoutY="99.0" prefHeight="113.0" prefWidth="131.0" progress="-0.43" />
<RadioButton layoutX="348.0" layoutY="247.0" mnemonicParsing="false" text="RadioButton" />
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="Untitled Tab 2">
<content>
<AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
</tabs>
</TabPane>
</children>
</AnchorPane>
答案 0 :(得分:7)
它在不同的上下文中使用不同的JVM版本。看起来你已经将SceneBuilder和Eclipse配置为将Java 7与JavaFX 2.2配合使用,但是您已将Java 8安装为Mac上的默认JVM;因此,当您运行jar文件时,它在Java 8下运行。
要检查此项,请打开终端并输入java -version
。我希望你能得到一个Java 8版本。
JavaFX 2.2和Java 8使用不同的默认样式表。 JavaFX 2.2使用caspian.css,而Java 8使用modena.css。尝试使用以下选项从终端运行可执行jar文件:
java -Djavafx.userAgentStylesheetUrl=caspian -jar path/to/jar/file
它应该(几乎完全)看起来像在JavaFX 2.2中那样