如何删除按钮单击JavaFX上的展开效果?

use*_*048 3 css java button javafx-2 fxml

单击JavaFX按钮时如何删除小扩展效果?而且我怎么能让它像菜单按钮一样工作(当我按下它以保持聚焦状态时,直到我按下另一个"菜单"按钮).有没有办法将节点分组到同一个焦点?

jew*_*sea 5

一个价格的三个问题;-)

单击JavaFX按钮时如何删除小扩展效果?

当你点击它有焦点的按钮时,当它有焦点时,它被聚焦环包围,这使它稍大.此效果通过css触发.

默认css位于JavaFX运行时安装中的jfxrt.jar中的caspian.css中.相关摘录在这里:

.button {
    -fx-skin: "com.sun.javafx.scene.control.skin.ButtonSkin";
    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
    -fx-background-radius: 5, 5, 4, 3;
Run Code Online (Sandbox Code Playgroud)

...}

.button:focused {
    -fx-color: -fx-focused-base;
    -fx-background-color: -fx-focus-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: -1.4, 0, 1, 2;
    -fx-background-radius:  6.4, 5, 4, 3;
}
Run Code Online (Sandbox Code Playgroud)

要删除轻微的扩展效果,请创建自己的样式表.在样式表中将其指定给场景,并将聚焦和未聚焦按钮的背景插图和半径设置为相同的值.这里是一个教程在JavaFX的CSS和不断有用的JavaFX CSS 参考指南.

如何让它像菜单按钮一样工作(当我按下它以保持聚焦状态时,直到我按下另一个"菜单"按钮).

我不太明白这个问题 - 这是按钮的默认行为.也许你正在混合焦点和手臂状态,实际上想要一个ToggleButton

有没有办法将节点分组到同一个焦点?

目前还没有内置到平台上.您可以为布局窗格编写自己的FocusModel类,该布局窗格会记住窗格中具有焦点的最后一个控件,并在窗格获得焦点或类似内容时再次重新分配焦点.这将是自定义代码.您需要使用的概念是节点的焦点属性,节点requestFocus api(有时通过在Platform.runLater中执行延迟以确保您覆盖默认焦点处理)以及(我认为)默认焦点顺序取决于的事实根据父母的子女的顺序.