晚安,我正在与一些合作伙伴一起使用javaFx进行申请;这个想法是它将用于Windows和Linux。我们一直在做一些测试,发现应用程序在两个操作系统中都显示不同。
我们正在使用Scene Builder。我想知道是否有人遇到类似的问题以及你是如何解决它的(我已经读过其他类似的帖子,但他们都没有帮助我)。
这只是一个例子,因为它适用于所有表格。如果那里有人可以提供帮助,我们真的很感激!!
我做了下一个函数来调用表单:
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>
答案 0 :(得分:1)
Windows默认Font与您运行的Linux默认Font不同。要检查这一点,请设置一个预定义的对象,然后查看
在你的TableCell中
{
setFont(Font.font(Font.getFontNames().get(4), size));
}
答案 1 :(得分:0)
非常感谢大家的评论,问题是字体系列和大小,因为Linux没有识别它们,我所做的是下载一个字体文件并将其添加到proyect,创建一个* .css文件用:
@font-face {
src: url("Roboto-Regular.ttf");
}
.root {
-fx-font-family: "Roboto Regular";
-fx-font-size: 12px;
}
然后在打开之前将其添加到场景中:
scene.getStylesheets().add(getClass().getResource("/stock/css.css").toExternalForm());
即使问题已经解决并且它看起来很棒,但仍然是一个微小的细节,当我设计时我必须取出右侧和底部的空格,因为Windows添加了更多的空间,这并没有&#39 ;似乎在Linux上正在发生,所以显示效果不同。