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

时间:2012-06-13 02:36:25

标签: java css button javafx-2 fxml

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

2 个答案:

答案 0 :(得分: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;

...     }

.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;
}

要删除轻微的扩展效果,请创建自己的样式表。在样式表中将其指定给场景,并将聚焦和未聚焦按钮的背景插图和半径设置为相同的值。这是JavaFX CSS上的tutorial和有用的JavaFX CSS reference guide

  

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

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

  

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

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

答案 1 :(得分:1)

Style your own favorite button如果你不喜欢默认的那个。否则用代码或图像解释小扩展效果 Use Menu and MenuItems制作菜单 或者使用Toggle Button对按钮进行分组并使其像菜单一样运行 通过说“保持聚焦状态”我认为你的意思是“选择/切换状态”而不是集中注意力。导致按钮在单击后保持聚焦状态。