具有透明背景的 JavaFX 按钮

JavaFX Button with transparent background

我在 JavaFX 中有一些经典的 Button,带有一个包含一些文本的框。

我需要没有那个框的按钮,只有文本,当我将鼠标悬停在按钮上或用鼠标单击按钮时,它会改变颜色。

在 JavaFX 中,样式是通过使用 CSS 完成的。

.button{
    -fx-border-color: transparent;
    -fx-border-width: 0;
    -fx-background-radius: 0;
    -fx-background-color: transparent;
    -fx-font-family:"Segoe UI", Helvetica, Arial, sans-serif;
    -fx-font-size: 1em; /* 12 */
    -fx-text-fill: #828282;
}

.button:focused {
    -fx-border-color: transparent, black;
    -fx-border-width: 1, 1;
    -fx-border-style: solid, segments(1, 2);
    -fx-border-radius: 0, 0;
    -fx-border-insets: 1 1 1 1, 0;
}

.button:pressed {
    -fx-background-color: black;
    -fx-text-fill: white;
}

将此代码添加到CSS 文件,将其保存到包含按钮的控件源文件所在的目录。然后在这个 class:

getStylesheets().add(getClass().getResource("nameofyourcssfile.css").toExternalForm());

然后该对象包含的所有按钮都将使用此样式-classes.

根据您的需要进行修改很简单。

很好的入门教程: http://docs.oracle.com/javafx/2/css_tutorial/jfxpub-css_tutorial.htm

JavaFX 有一个 Hyperlink control,它基本上具有您正在寻找的所有功能。它以与按钮相同的方式触发 ActionEvents:

Hyperlink button = new Hyperlink("Some text");
button.setOnAction(e -> System.out.println("Hyperlink clicked"));

就像网页中的 link 一样,如果它 "visited" 会以不同的颜色显示,即如果对其触发了一个动作。

这是您在 scenebuilder 中的方法

点击选择按钮。

然后在属性->样式中选择“-fx-background-color”并将值设置为“透明”

像这样

对于来到这里寻找删除默认按钮背景的方法的任何人,可以这样做:

button.setBackground(null);

如果您想重新设计按钮的样式,我建议您使用 css,就像上面的答案一样。