簡體   English   中英

為什么我的JavaFX窗口到處看起來都不一樣?

[英]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.

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