我已經在我的FXML文件中定義了一個css樣式表,當它用scenebuilder打開時,它顯示正確,但是當我運行該程序時,它不是。這混淆了我......JavaFX不加載css,因爲它在fxml中做的事
這就是我的工作:
├───bin
│ └───app
│ application.css
│ Fxml.fxml
│ Main.class
│
└───src
└───app
application.css
Fxml.fxml
Main.java
我Fxml.fxml文件看起來像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import java.net.URL?>
<VBox prefHeight="100.0" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<HBox prefHeight="20.0" />
<TableView id="table" xmlns:fx="http://javafx.com/fxml">
<columns>
<TableColumn id="tablec_h_from" text="H_FROM" />
<!-- other columns -->
</columns>
</TableView>
</children>
<stylesheets>
<URL value="@application.css" />
</stylesheets>
</VBox>
的application.css看起來是這樣的:
.table-column {
-fx-pref-width: 55;
}
的Main.java:
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = null;
try {
root = (VBox)FXMLLoader.load(getClass().getResource("Fxml.fxml"));
} catch (IOException e) {
e.printStackTrace();
}
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
}
因此,如前所述,當我使用場景構建器打開FXML文件時,表格列的寬度爲55px,但是當我運行程序時,表格列的默認寬度爲80 PX。目標當然是要有列55px的寬度。
我是否必須在Main.java中導入css文件,即使我已經在fxml文件中定義了它?如果是這樣,怎麼樣?
我使用的Eclipse IDE,和JavaFX版本2.2.45-B18
任何幫助表示讚賞。
我有點困惑,你在運行程序時如何告訴列是80像素? printlines?當我運行上面的代碼時,我在sceneBuilder和應用程序的輸出中都得到了相同的結果。 – WillBD
我使用一個程序,它顯示我相對於屏幕的指針位置,然後我做數學。 我試着複製我在新項目中寫的內容,並獲得與以前相同的結果。 我感興趣的是你得到的寬度是55還是80像素。如果你會那麼友好,你能修改那個css文件,比如說200px,然後告訴我你是否看到了差異? – SlumpA
也許因爲我使用SceneBuilder 2.0(開發人員預覽版)而得到那個結果...... – SlumpA