[英]Why does my JavaFX window look different everywhere?
我在玩JavaFX。 在Scene Builder中,當由Eclipse運行時,它看起來像這樣:
何時,我將其導出為可運行罐。 將其放在我的桌面上,這就是我得到的:
為什么?
我在使用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>
它在不同的上下文中使用了不同的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中一樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.