自定义JavaFX按钮形状

4
我不是JavaFX的老手,想请问一下。在JavaFX中如何制作或设置一个不同形状的按钮?默认情况下,按钮具有这些圆角矩形形状。我想制作一个像下面图片中的L形状按钮。
我已经搜索过很多次此问题,但仍然没有找到解决方案。
你能帮帮我吗? Image

你能否制作一个类似的图像文件,并将按钮节点设置为该图像呢? - Stevantti
4个回答

2

有一种方法可以去掉灰色背景颜色。你可以将它设置为透明,然后你的按钮就只会是图片了。在你的情况下,代码应该是x.setStyle("-fx-background-color: transparent"),其中x代表你的按钮。


1

您还可以使用-fx-shape CSS属性来指定一个SVG路径字符串。通过指定形状,该区域将采用该形状而不是矩形或圆角矩形。


0

使一个路径节点可点击

您可以使用 Path 节点创建 L 形并使其可点击。

这是一个单一的 JavaFX 应用程序,您可以尝试。

App.java

public class App extends Application {
    
    @Override
    public void start(Stage stage) {
        
        Path path = new Path(new MoveTo(0, 0), new HLineTo(200), new VLineTo(-100),
                new HLineTo(100), new VLineTo(-200), new HLineTo(0), new ClosePath());
        path.setFill(Color.AQUAMARINE);
        
        path.setOnMouseClicked((e) -> {
            System.out.println("do something");
        });
        
        var scene = new Scene(new StackPane(path), 640, 480);
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String[] args) {
        launch();
    }
    
}

结果:

enter image description here


-1
尝试制作该形状的图像文件并使用Node.setGraphic()方法。 示例:
public void start(Stage primaryStage){

String u = "http://www.clker.com/cliparts/9/1/5/2/119498475589498995button-red_benji_park_01.svg.med.png";
    Image i = new Image(u);
    Button x = new Button();
    x.setGraphic(new ImageView(i));
    BorderPane y = new BorderPane();
    y.setCenter(x);

    primaryStage.setScene(new Scene(y, 400, 400));
    primaryStage.show();
}

它将显示一个大红色按钮。但使用您的图像。


它仍然具有圆角矩形形状的按钮。有没有办法像实际遵循圆形的形状一样摆脱它,或者只是通过去掉按钮的灰色颜色来摆脱它? - Joross Barredo
1
哦,我明白你的意思了,我会进行一些研究并回复你。 - Stevantti

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