(JavaFX8)css按钮边框和背景色问题

(JavaFX8)css按钮边框和背景色问题,java,css,button,javafx,Java,Css,Button,Javafx,我正试图通过css创建一个类似于Fallout 4的按钮样式,它具有简单的背景色和边框属性,实际上效果很好。唯一的问题是边框并没有覆盖整个按钮。按钮底部有一块背景突出。(见截图1) 当我点击按钮并按住鼠标时,它消失了,尽管不是完全消失。(见截图2) 以下是我的css的一部分: .button { -fx-background-color:transparent ; -fx-background-radius:0; -fx-border-color:transparen

我正试图通过css创建一个类似于Fallout 4的按钮样式,它具有简单的背景色和边框属性,实际上效果很好。唯一的问题是边框并没有覆盖整个按钮。按钮底部有一块背景突出。(见截图1)

当我点击按钮并按住鼠标时,它消失了,尽管不是完全消失。(见截图2)

以下是我的css的一部分:

.button {
    -fx-background-color:transparent ;
    -fx-background-radius:0;
    -fx-border-color:transparent;
    -fx-border-width: 0 3 3 0;
}

.button:hover {
    -fx-background-color:lime;
    -fx-background-radius:0;
    -fx-border-color:black;
    -fx-border-width: 0 3 3 0;
}

你知道这是什么原因吗?

这里有一个简单的程序,你想使用下面的css。虽然这个问题不能用这个来重现

public class test extends Application
{
    public static void main(String[] args) 
    {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception 
    {
        BorderPane pane = new BorderPane();
        pane.getStylesheets().add(
                getClass().getResource("test.css").toExternalForm()
        );

        Button test = new Button("Back");
        test.setPrefWidth(120);
        pane.setCenter(test);

        Scene scene = new Scene(pane, 150, 150);
        primaryStage.setScene(scene);
        primaryStage.setTitle("csstest");
        primaryStage.show();
    }
}
test.css

@font-face{
    src: url('roboto.ttf');
}

.root {
    -fx-background-color:black;
}

.text {
    -fx-font-family: "Roboto Condensed";
    -fx-fill: lime;
    -fx-font-size: 20;
}

.button {
    -fx-background-color:transparent ;
    -fx-background-radius:0;
    -fx-border-color:transparent;
    -fx-border-width: 0 3 3 0;
}

.button:hover {
    -fx-background-color:lime;
    -fx-background-radius:0;
    -fx-border-color:black;
    -fx-border-width: 0 3 3 0;
}

.button:hover .text{
    -fx-fill: black;
}

为了重现问题,需要在场景中使用多个按钮节点。当按钮未聚焦时,由于背景插入而产生视觉效果。为避免这种情况,请添加
-fx背景插图:0按钮上选择code>:将鼠标悬停在CSS规则上,问题将得到解决

.button:hover {
    -fx-background-color:lime;
    -fx-background-radius:0;
    -fx-border-color:black;
    -fx-border-width: 0 3 3 0;
    -fx-background-insets: 0;
}

不确定,但为了解决这个问题,你可以总是使边界变厚。我也发现了这个链接,这里的人似乎认为某些FX css不能正常工作,并且给了你一些替代方案。我无法重现上面描述的视觉问题。请发布一个我们可以使用的最小可运行程序。@JKostikiadis说实话,我自己不能复制它。。。我只是在一个边框窗格的中心放了一个按钮,然后应用了css,结果就像我第一篇文章中的第二个屏幕截图一样。@Matt我已经尝试过让边框变厚,但不幸的是,这没有解决任何问题。使用插入实际上会导致这样的问题,之前我在测试东西,但在我的cssWow中没有任何线条设置插入,它真的很简单。。。很高兴知道,谢谢大家!