Спокойной ночи, я делаю приложение с помощью javaFx с некоторыми партнерами; идея заключается в том, что он будет использоваться в Windows и Linux. Мы проводили некоторые тесты и видели, что приложение отображает разные в обеих ОС.JavaFX DPI awarness
Мы используем Scene Builder. Мне интересно, сталкивался ли кто-нибудь с подобной проблемой и как вы ее решаете (я уже читал другую аналогичную запись, но никто из них не помог мне).
Это, как он отображается на Windows:
И это, как он отображается на Linux:
Это только один пример, как это происходит со всеми формами. Если есть кто-то, что может помочь, мы будем очень благодарны!
Я сделал следующую функцию для вызова формы:
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);
}
}
Вот FXML формы в соответствии с просьбой:
<?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>
Просто выглядит, как разные шрифты меняют размер кнопок. Можете ли вы опубликовать код? –
Я разместил код, который я использую, чтобы называть все формы, независимо от того, что вам нужно. Я счастлив опубликовать его, это не столько пространство, сколько промежуток между различными элементами управления формы. –
Взгляните на приложение, используя [ScenicView] (http://fxexperience.com/scenic-view/) для обеих ОС, чтобы выяснить, какова фактическая разница. Соответствующий код находится в файлах FXML и CSS, которые вы должны добавить в сообщение. – hotzst