我不是JavaFX的老手,想请问一下。在JavaFX中如何制作或设置一个不同形状的按钮?默认情况下,按钮具有这些圆角矩形形状。我想制作一个像下面图片中的L形状按钮。
我已经搜索过很多次此问题,但仍然没有找到解决方案。
你能帮帮我吗?
我已经搜索过很多次此问题,但仍然没有找到解决方案。
你能帮帮我吗?
![Image](https://istack.dev59.com/x0Tfh.webp)
有一种方法可以去掉灰色背景颜色。你可以将它设置为透明,然后你的按钮就只会是图片了。在你的情况下,代码应该是x.setStyle("-fx-background-color: transparent"),其中x代表你的按钮。
您还可以使用-fx-shape CSS属性来指定一个SVG路径字符串。通过指定形状,该区域将采用该形状而不是矩形或圆角矩形。
使一个路径节点可点击
您可以使用 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();
}
}
结果:
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();
}
它将显示一个大红色按钮。但使用您的图像。