gufran91
gufran91

Reputation: 67

javaFX: styleClass is not working in jar file

It's working fine while I am running the application directly from eclipse. but after building the application using ant, generated jar file it's not working.

However if I removed Styleclass="theme" from fxml it's working fine using jar file as well

Java File

public class MainClass extends Application {


public static void main(String[] args) {
    launch(args);
}


@Override
public void start(Stage stage) throws Exception {
Parent root =   FXMLLoader.load(getClass().
getResource("/resources/fxmlDocument/Sample.fxml"));


stage.setTitle("SAMPLE");
Scene scene= new Scene(root);

scene.getStylesheets().add(getClass().getClassLoader().
getResource("resources/css/sample.css").toExternalForm());


stage.setScene(scene);
stage.setResizable(false);

stage.show();
}
}

Fxml File:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" styleClass="theme" xmlns:fx="http://javafx.com/fxml" fx:controller="com.integra.test.MainClassController">
  <children>
    <Label layoutX="300.0" layoutY="184.0" text="Great..!" />
    <Button fx:id="clickbutton" layoutX="207.0" layoutY="184.0" mnemonicParsing="false" text="clickme" />
    <TextField fx:id="text1" layoutX="207.0" layoutY="220.0" prefWidth="200.0" />
    <Button fx:id="closebutton" layoutX="459.0" layoutY="318.0" mnemonicParsing="false" onAction="#closeButtonAction" prefHeight="37.0" prefWidth="75.0" text="Close" />
  </children>
</AnchorPane>

Upvotes: 0

Views: 2364

Answers (1)

Codelord
Codelord

Reputation: 1120

You also use this for adding Style sheets to the controls.

control.getStylesheets().add
 (MainClass.class.getResource("Sample.css").toExternalForm());

make sure css file in the same package or specify source path.

Second way is to use scene builder and add css using scene builder. You will get tutorial for this.

Upvotes: 4

Related Questions