【问题标题】:JavaFX Text Stretches Stage WidthJavaFX 文本拉伸舞台宽度
【发布时间】:2014-07-02 21:13:50
【问题描述】:

我有以下示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Test extends Application {


    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {


        primaryStage.setTitle("JavaFX Test");

        GridPane grid = new GridPane();
        grid.add(new Text("Enter the value in the text box below:"), 0, 0, 3, 1);

        grid.add(new Text("Label: "), 0, 1);
        grid.add(new TextField(), 1, 1);
        grid.add(new Text("units"), 2, 1);

        Scene scene = new Scene(grid);
        primaryStage.setScene(scene);
        primaryStage.sizeToScene();
        primaryStage.show();
    }
}

这会导致以下窗口:

如果我将窗口大小调整到我期望的宽度,TextField 也会调整大小:

我的问题是,窗口右侧的空白区域是从哪里来的?为什么窗口大小比组件占用的空间大得多?为什么当我缩小窗口时 TextField 会调整大小,即使窗口有足够的空间放置它?

如果我删除顶部的文本,窗口大小会更合理:

我已经尝试使用 VBox 和 HBox 来实现我正在寻找的效果,但窗口似乎总是看起来像上面的第一张图片。怎么回事?

【问题讨论】:

  • 您运行的是哪个 JavaFX 版本?
  • @James_D 我正在使用 JDK 1.7.0_51 附带的 jfxrt.jar 版本

标签: java javafx gridpane


【解决方案1】:

这看起来像是一个已知错误:RT24636。它已在最新版本 (Java 1.8.0_05) 中修复。

JIRA 上没有发布任何解决方法,也没有立即想到。

【讨论】:

  • 更新到 Java 8 确实解决了这个问题。这是否意味着我的用户必须拥有 Java 8 才能工作?有没有其他办法解决这个问题?
  • 您可能会弄乱列约束以查看是否可以找到解决方法,但需要 Java 8 可能是使其工作的唯一可靠方法。根据您的部署要求,您可以考虑使用 "self contained package" 来确保 Java 版本。
  • 谢谢,看起来很有希望!
猜你喜欢
  • 2017-12-14
  • 2016-02-10
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多