【问题标题】:JavaFX - Why do buttons sometimes shrink?JavaFX - 为什么按钮有时会缩小?
【发布时间】:2018-12-13 07:51:27
【问题描述】:

在 javaFX 中,为什么当我将鼠标悬停在按钮上时有时会随机缩小?

为什么会发生这种情况以及如何阻止它。

这是我描述的按钮的代码,但我不知道你是否需要它。它似乎也发生在其他按钮上,并不总是发生在同一个按钮上。

btnNext = new Button(">");
    btnNext.setOnAction(e -> {
        switch (view) {
            case MONTH:
                setDisplay(target.plusMonths(1));
                break;
            case WEEK:
                setDisplay(target.plusWeeks(1));
                break;
        }
    });

这只发生在我点击它然后离开之后。程序第一次启动时,是正常大小。

【问题讨论】:

  • 按钮的父级是什么? setDisplay 是做什么的?你添加了样式表吗? (或简称:创建一个minimal reproducible example
  • 父级只是一个HBox。 setDisplay 并不重要,因为它在所有其他执行其他操作的按钮上执行此操作。没有样式表。

标签: java button javafx


【解决方案1】:

当控件缩小时,这通常是一个好兆头,表明其他东西正在从它那里窃取空间。在正常情况下,Scene 会询问所有后代节点需要多少空间来渲染自己 - 这就是 prefWidthprefHeight 所做的。

当存在空间限制时,大多数Pane 子类(回想一下Pane 子类根据某些规则管理其子类)会尝试减小一个或多个子类的大小。如果您不希望特定的Node 缩小到其计算大小以下,那么您必须指定minWidth 和/或minHeight,或将它们设置为USE_PREF_SIZE。将它们中的一个或两个设置为USE_PREF_SIZE 告诉父节点这个节点不能收缩。

然而,如果你为所有节点指定USE_PREF_SIZE,那么父节点就会遇到麻烦——它被告知要收缩,但它不能收缩任何东西。我不知道究竟会发生什么,但很可能整个用户界面会看起来很奇怪。

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多