首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX新闻部的意识

JavaFX新闻部的意识
EN

Stack Overflow用户
提问于 2016-02-20 02:35:48
回答 2查看 1.2K关注 0票数 0

晚安,我正在与一些合作伙伴一起使用javaFx开发一个应用程序,其想法是它将在Windows和Linux中使用。我们一直在做一些测试,并看到应用程序在这两个操作系统中显示的不同。

我们正在使用场景生成器,我想知道是否有人碰巧遇到了类似的问题,以及您是如何解决的(我已经读过其他类似的帖子,但他们都没有帮助我)。

这是它在Windows上显示的方式:

这就是它在Linux上显示的方式:

这只是一个例子,因为它发生在所有形式。如果有人可以帮忙,我们会很感激的!

我做了下一个函数来调用表单:

代码语言:javascript
复制
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:

代码语言:javascript
复制
    <?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-20 22:21:20

非常感谢大家的评论,问题在于字体系列和字体大小,因为Linux没有识别它们,我所做的是下载一个字体文件并将其添加到proyect中,创建一个*.css文件:

代码语言:javascript
复制
    @font-face {
         src: url("Roboto-Regular.ttf");
    }

    .root {
        -fx-font-family: "Roboto Regular";
        -fx-font-size: 12px;
     }

然后将其添加到场景中,然后以下列方式打开:

代码语言:javascript
复制
scene.getStylesheets().add(getClass().getResource("/stock/css.css").toExternalForm());

尽管这个问题已经解决了,而且看起来很棒,但在我设计的时候,仍然有一些微小的细节,当我设计的时候,我必须把空间移到右边和底部,因为Windows增加了更多的空间,而这似乎并不发生在Linux上,所以在显示上是有区别的。

票数 0
EN

Stack Overflow用户

发布于 2016-02-20 12:31:44

windows默认字体与正在运行的Linux默认字体不同。要检查这一点,请设置一个预定义的对象,并请参阅

在你的TableCell里

代码语言:javascript
复制
{
   setFont(Font.font(Font.getFontNames().get(4), size));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35518459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档