Я создал свой проект Maven, используя IntelliJ в Linux, все работает нормально, но когда я выполняю тот же проект в Windows 10, текст в JFXButton
s не отображается должным образом (половина текста отображается в большинстве кнопок).
Java 11.0.2, IntelliJ IDEA Ultimate Edition и SceneBuilder 11 для Java 11 используются в обеих системах.
Что странно для меня, это то, что он правильно отображает вSceneBuilder, но когда я его выполняю, он портит графический интерфейс.Он также не распознает ЛЮБЫЕ установленные шрифты (также пытался @ font-face в CSS получить шрифт .tff , но безуспешно).
В Linux (работает и Scene Builder) и Windows 10 (Scene Builder) я получаю:
И в Windows 10(работает), я получаю:
(или хуже при использовании большего размера шрифта)
Fxml Я используюдля этой сцены: (генерируется SceneBuilder)
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextField?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:id="root" maxHeight="380.0" maxWidth="600.0" minHeight="380.0" minWidth="600.0" prefHeight="380.0" prefWidth="600.0" stylesheets="@../css/CloseInterruptStyle.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label fx:id="mbyllNderprejTitle" layoutX="172.0" layoutY="14.0" text="Ndërprej Kontratën" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="220.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Karburanti në dorëzim :" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="255.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Kilometrat në dorëzim :" />
<JFXTextField fx:id="karburantiTextField" alignment="CENTER" focusColor="#f8ea53" layoutX="307.0" layoutY="220.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" />
<JFXTextField fx:id="kilometraTextField" alignment="CENTER" focusColor="#f8ea53" layoutX="307.0" layoutY="255.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" />
<JFXButton fx:id="anulloButton" buttonType="RAISED" layoutX="185.0" layoutY="316.0" minHeight="31.0" onAction="#anulloButtonAction" prefHeight="31.0" prefWidth="111.0" text="Anullo" />
<JFXButton fx:id="mbyllNderprejButton" buttonType="RAISED" layoutX="326.0" layoutY="316.0" minHeight="31.0" onAction="#mbyllNderprejButtonAction" prefHeight="31.0" prefWidth="111.0" text="Ndërprej" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="80.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Kontrata me ID :" />
<JFXTextField fx:id="kontractIdTextField" alignment="CENTER" editable="false" focusColor="#b93845" layoutX="307.0" layoutY="80.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" unFocusColor="#b93845" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="115.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Nga Klienti :" />
<JFXTextField fx:id="klientiTextField" alignment="CENTER" editable="false" focusColor="#b93845" layoutX="307.0" layoutY="115.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" unFocusColor="#b93845" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="150.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Koha e dorezimit : " />
<JFXTextField fx:id="kohaDorezimitTextField" alignment="CENTER" editable="false" focusColor="#b93845" layoutX="307.0" layoutY="150.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" unFocusColor="#b93845" />
<Label alignment="CENTER_RIGHT" layoutX="125.0" layoutY="185.0" maxHeight="26.0" maxWidth="180.0" minHeight="26.0" minWidth="170.0" prefHeight="26.0" prefWidth="180.0" styleClass="fieldSize" text="Diferenca e kohës :" />
<JFXTextField fx:id="diferencaKohesTextField" alignment="CENTER" editable="false" focusColor="#b93845" layoutX="307.0" layoutY="185.0" maxHeight="26.0" maxWidth="145.0" minHeight="26.0" minWidth="145.0" prefHeight="26.0" prefWidth="145.0" styleClass="fieldSize" unFocusColor="#b93845" />
</children>
</AnchorPane>
Редактировать: контроллер добавляется с использованием этого метода (почти для каждого fxml файла приложения):
//get parent from given fxml path, and sets it controller
Parent getParentView(String fxmlPath, Object controller) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
loader.setController(controller);
return loader.load(); //this is added to a stage or inside another container
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
Стиль CSS, который я использовал в обоих случаях:
#root {
-fx-background-color: linear-gradient(to right, #cb356b, #bd3f32);
}
#mbyllNderprejTitle {
-fx-font-size: 32;
-fx-text-fill: #F2CA00;
-fx-font-family: "Kotta One";
}
.fieldSize {
-fx-font-size: 15;
}
#anulloButton, #mbyllNderprejButton {
-fx-border-radius: 10pt;
-fx-background-radius: 10pt;
-fx-font-size: 16;
}
.text-field {
-fx-background-color: linear-gradient(to bottom, rgba(236, 240, 241, 0.03), rgba(236, 240, 241, 0.08));
-fx-font-size: 14px;
}
#anulloButton {
-fx-background-color: linear-gradient(to right, rgba(234, 215, 186, 0.36), rgba(234, 171, 135, 0.34));
}
#mbyllNderprejButton {
-fx-background-color: linear-gradient(to right, rgba(230, 134, 1, 0.58), rgba(191, 19, 77, 0.53));
-fx-text-fill: white;
}
Зависимости Maven:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>11</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>11</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>11</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>9.0.0</version>
</dependency>
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>9.0.8</version>
</dependency>
<dependency>
<groupId>io.github.typhon0</groupId>
<artifactId>AnimateFX</artifactId>
<version>1.2.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
</dependencies>
Я пытался увеличить высоту кнопки (чтобы включить текст), но этотребуется, по крайней мере, 33px высота , чтобы почти включить 15-16px размер шрифта , который «портит» внешний вид приложения.
Для распознавания шрифтов я не делалпока не нашли решение.
Необходимо, чтобы это работало в Windows, потому что клиент использует Windows 10. Требуется ли другая зависимость или я что-то не так делаю?