Java FX面板中的圆角

16

我正在尝试在我的应用程序中获得圆形底部角,但结果是这样的:

在此输入图像描述

这是CSS文件:

.mainFxmlClass {
  #pane{
    -fx-background-size: 1200 900;
    -fx-background-radius: 0 0 18 18;
    -fx-border-radius: 0 0 18 18;
    -fx-background-color: #FC3D44;
  }
}

还有我的主类:

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("Preview.fxml"));
    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
}
public static void main(String[] args) {
    launch(args);
}

我怎样才能去掉这些白色角落?


1
-fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0; - RïshïKêsh Kümar
1
尝试将场景的填充设置为透明, scene.setFill(Color.Transparent); - lambad
3个回答

18

终于在进行了大量研究并得到了西班牙版Stack O.的帮助后,最简单的去除白色角落的方法如下:

在主类中,您必须添加以下内容:

scene.setFill(Color.TRANSPARENT);

并且:

stage.initStyle(StageStyle.TRANSPARENT);
唯一的问题是 StageStyle.TRANSPARENT 会让你失去关闭按钮,所以你必须自己制作它。 最终结果如下:

enter image description here


1
这个方法是有效的,但你还需要确保使用setBackground()将你的面板设置为透明。这个方法需要跳过一些额外的步骤,但一旦你知道如何做,就很容易了。 yourPane.setBackground(new Background(new BackgroundFill(Color.TRANSPARENT, CornerRadii.EMPTY, Insets.EMPTY))); - Austin Whitelaw

9
如果您不想设置背景颜色,只需尝试以下代码:-fx-background-color: transparent; 或者
-fx-background-size: 1200 900;
-fx-background-radius: 30;
-fx-border-radius: 30;
-fx-border-width:5;
-fx-border-color: #FC3D44;

或者

 -fx-background-size: 1200 900;
 -fx-border-radius: 10 10 0 0;
 -fx-background-radius: 10 10 0 0;
 -fx-border-color: #FC3D44;

  /* top-left, top-right, bottom-right, and bottom-left corners, in that order. */

4

但是如果你想在CSS中设置背景图片而不是纯色背景:

-fx-background-image: url("backs/background.jpg");

您应该将这样的代码放在您的主类中:

Rectangle rect = new Rectangle(1024,768);
rect.setArcHeight(60.0);
rect.setArcWidth(60.0);
root.setClip(rect);

I found it here


在将其用作背景之前,请尝试将图像的角落四舍五入。 - F.Stan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接