为什么我的JavaFX窗口到处都不一样?

时间:2014-05-26 04:36:16

标签: java javafx

我正在玩JavaFX。在Scene Builder中,当Eclipse运行时,它看起来像这样:

enter image description here

何时,我将其导出为Runnable Jar。把它放在我的桌面上,这就是我得到的:

enter image description here

为什么?

我使用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>

1 个答案:

答案 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中那样