Bonne nuit, je fais une application en utilisant javaFx avec certains partenaires; l'idée est que ça va être utilisé sous Windows et Linux. Nous avons fait quelques tests et vu que l'application affiche différents dans les deux systèmes d'exploitation.JavaFX DPI awarness
Nous utilisons Scène Builder. Je me demande si quelqu'un a rencontré un problème similaire et comment vous le résoudre (j'ai déjà lu d'autres post similaire mais aucun d'entre eux m'a aidé).
Voici comment il affiche sur Windows:
Et voici comment il affiche sur Linux:
Ceci est juste un exemple, comme il arrive avec toutes les formes. S'il y a quelqu'un là-bas qui pourrait aider, nous l'apprécierions vraiment !!
Je fis la fonction suivante pour appeler les formes:
private void OpenForm(String form, String title) {
try
{
FXMLLoader fxmlLoader1 = new FXMLLoader(getClass().getResource(form));
Parent root;
root = fxmlLoader1.load();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.setTitle(title);
stage.setResizable(false);
stage.show();
}catch (Exception ex)
{
Msg(3,"Program error","It appears there's something wrong : ",ex.getMessage().toString());
System.out.println(ex);
}
}
Voici le FXML du formulaire tel que demandé:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="346.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="GUI.Almacen.ClientesMod">
<children>
<TableView fx:id="tvClientes" layoutX="4.0" layoutY="6.0" prefHeight="310.0" prefWidth="638.0">
<columns>
<TableColumn fx:id="tcIdCliente" prefWidth="75.0" text="RacF de Cliente" />
<TableColumn fx:id="tcNombre" prefWidth="75.0" text="Nombre" />
<TableColumn fx:id="tcDivision" prefWidth="75.0" text="División" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
<Button fx:id="btnModificar" disable="true" layoutX="535.0" layoutY="320.0" mnemonicParsing="false" onAction="#abrirModificarCliente" text="Modificar Cliente" />
<Button fx:id="btnAgregar" layoutX="432.0" layoutY="320.0" mnemonicParsing="false" onAction="#abrirAgregarCliente" text="Agregar Cliente" />
</children>
</AnchorPane>
Il semble que différentes polices modifient la taille des boutons. Pouvez-vous poster le code? –
J'ai posté le code que j'utilise pour appeler tous les formulaires, tout ce dont vous avez besoin Im heureux de l'afficher, n'est pas tant d'espace que c'est l'espacement entre les différents contrôles de la forme. –
Jetez un oeil à l'application en utilisant [ScenicView] (http://fxexperience.com/scenic-view/) sur les deux OS pour comprendre quelle est la différence réelle. Le code pertinent est dans les fichiers FXML et CSS que vous devez ensuite ajouter à la publication. – hotzst