javafx如何自定义窗口
时间: 2023-09-11 13:11:34 浏览: 81
JavaFX 中可以使用 StageStyle 属性来控制窗口的外观和行为。为了自定义窗口,需要使用 StageStyle.UNDECORATED 样式,然后在窗口中添加自定义的控件和事件。
以下是一个简单的示例,演示如何创建一个自定义窗口:
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class CustomWindow extends Application {
private double xOffset = 0;
private double yOffset = 0;
@Override
public void start(Stage primaryStage) throws Exception {
// 创建一个根节点
StackPane root = new StackPane();
root.setStyle("-fx-background-color: #FFFFFF; -fx-border-color: #000000; -fx-border-width: 1px;");
// 创建一个按钮
Button closeButton = new Button("关闭");
closeButton.setOnAction(event -> primaryStage.close());
// 将按钮添加到根节点
root.getChildren().add(closeButton);
// 创建一个场景
Scene scene = new Scene(root, 300, 200);
// 设置场景的样式
primaryStage.initStyle(StageStyle.UNDECORATED);
// 添加鼠标事件,使窗口可以拖动
root.setOnMousePressed(event -> {
xOffset = event.getSceneX();
yOffset = event.getSceneY();
});
root.setOnMouseDragged(event -> {
primaryStage.setX(event.getScreenX() - xOffset);
primaryStage.setY(event.getScreenY() - yOffset);
});
// 设置舞台的场景并显示
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例中,我们创建了一个 StackPane 作为根节点,并设置了它的样式为白色背景和黑色边框。然后,我们创建了一个按钮并将它添加到根节点上。
接下来,我们创建了一个 Scene 并将根节点作为参数传递给它。我们还使用了 StageStyle.UNDECORATED 样式来隐藏窗口的默认装饰和标题栏。
最后,我们添加了鼠标事件,使窗口可以拖动。当用户按下鼠标时,我们记录下鼠标的位置;当用户拖动鼠标时,我们根据鼠标的位置移动窗口。
启动应用程序后,将显示一个没有标题栏的窗口,您可以在窗口中移动按钮。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)