当前位置: 首页 > 知识库问答 >
问题:

JavaFX按钮在第一次点击后收缩并失去装饰

訾俊名
2023-03-14

我突然出现了一个奇怪的行为。我简单地将Button作为HBox的子节点。当我第一次单击时,它会缩小其大小并失去自己的装饰,就好像它变成了一个普通的Label。这种行为发生在Button和继承它的人身上(如JfoPhoenix的JFXButton也会受到影响)。我将行为动画如下:

初始化时,工具栏下的按钮似乎也会出现此故障状态,如下所示:

我使用的FXML如下所示:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" styleClass="page" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
  <stylesheets>
     <URL value="@../stylesheets/base.css" />
     <URL value="@../stylesheets/jfoenix.table.css" />
     <URL value="@../stylesheets/main.tasks.css" />
  </stylesheets>
  <children>
     <VBox styleClass="section" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <children>
           <Pane styleClass="section-header">
              <children>
                 <Label text="Görevler" />
              </children>
           </Pane>
           <TableView prefHeight="200.0" prefWidth="200.0" styleClass="task-table">
              <columns>
                 <TableColumn prefWidth="75.0" text="C1" />
                 <TableColumn prefWidth="75.0" text="C2" />
              </columns>
           </TableView>
           <HBox prefHeight="100.0" prefWidth="200.0">
              <children>
                 <!-- This is the buggy button. -->
                 <Button mnemonicParsing="false" text="Button" />
              </children>
           </HBox>
        </children>
     </VBox>
  </children>

以下是影响此FXML文件的规则:

.section {
    -fx-min-width: 1000px;
    -fx-min-height: 200px;
    /*-fx-pref-width: 1000px;*/
    /*-fx-pref-height: 200px;*/

    -fx-background-color: #fff;
    -fx-effect: dropshadow(three-pass-box, #999, 10, 0.2, 0, 0);
    -fx-padding: 20px;
    -fx-spacing: 10px;
}

.section > .section-header {
    -fx-pref-height: 40px;
    -fx-max-height: 120px;
}

.section > .section-header > .label {
    -fx-font-size: 24px;
    -fx-text-fill: #666;
}

/** I've also used jfx-table-view.css of JFoenix library. **/
/** https://github.com/jfoenixadmin/JFoenix/wiki/Table-View **/

我不知道是什么影响了即使是普通的按钮。是什么导致此故障?

提前感谢。

  • Java 1.8.0 162
  • SceneBuilder 8.4.1
  • Windows 10
org.kordamp.ikonli:ikonli-javafx:2.1.1
com.jfoenix:jfoenix:8.0.3
org.controlsfx:controlsfx:8.40.14

共有1个答案

郭志泽
2023-03-14

这种效果的发生是因为jfoenix.table.css中的这条规则

:focused {
    -fx-background-color: -fx-table-color, -fx-box-border, -fx-control-inner-background;
    -fx-background-insets: -1.4, 0, 1;
    -fx-background-radius: 1.4, 0, 0;
    /*....*/
    -fx-padding: 1; /* 0.083333em; */
}

它实际上是按预期工作的,因为当您单击控件时,它们会聚焦。两个按钮可以使效果更清晰:

 类似资料:
  • 当我单击submit或register时,需要两次单击才能完成任何操作。如何修复此问题?

  • 我正在尝试在React中构建我的第一个计算器。我的纽扣似乎有问题(我想)。在测试s时,我发现我第一次点击添加按钮不会更新所有setState。相反,第二次单击会正确更新它。 知道它为什么不起作用吗? 我有一个名为“DaInserting”的div,当用户点击任何数字键时会更新,然后当用户点击加法/减法/等时,应该更新,但它没有。它在第二次点击时更新:-检查。 当用户点击加法/减法后,DaInser

  • 问题内容: 我正在尝试用JavaFX创建我的第一个应用程序,而Button调用一个方法时遇到了问题(例如,打开另一个窗口)-我总是必须单击两次才能触发操作。 这是来自控制器的代码: 我的方法在这里实现: 问题答案: 最有可能在FXML中包含以下内容: 这使您的按钮可以调用您的方法。但是,您没有定义要在单击按钮时执行的逻辑,而是第一次说:“单击此按钮时,在我的按钮上放一个会叫“ 因此,您的第一次单击

  • 问题内容: 我正在开发我的第一个android计算器应用程序。我陷入一个单一的缺陷。我添加了几个按钮,然后单击这些按钮,它将把各自的文本放在“ 字段”上。主要问题描述如下:在运行项目时,必须单击两次按钮才能将相应的文本首次放置在字段上。例如,单击时将“ 1”放在字段上。在运行时,首先单击该按钮无效。仅在第二次单击时,它将“ 1”放在字段上。 该守则如下: XML按钮和EditField, Main

  • 我的代码生成一个输入字段,允许用户输入要搜索的值。然后当他们单击提交按钮时,它会使displayMap为true,因此当MapDisplay组件呈现时,它将通过Map组件触发API搜索并返回随后显示在地图上的值。 问题是这个过程只工作一次。当我再次单击该按钮时,它确实做了一些事情,我确认它正在输入框中获取新值,但我似乎不知道如何再次渲染地图。 我尝试在this.setState中设置其他变量,试图

  • 我有一个简单的HTML和scss的navbar,我想使它以一种方式,它可以折叠,例如,我将有一个小按钮在navbar的侧面,当点击时,条增长显示元素(图标和标题),当再次点击时navbar收缩显示只有图标,我如何实现这样的东西? null null