如何在FXML中添加CSS样式表

html-css022

如何在FXML中添加CSS样式表,第1张

每个JavaFX控件类都对应这一个CSS Type,我们可以使用类型选择器,控制该类型控件的外观。其对应的命名为:将JavaFX的类名成首字母小写,如果是由多个单词拼接的类名,将每个单词原来大写的首字母小写然后用连字符将多个单词连接。

FXML的优势之一是基于XML,是大多数开发人员所熟悉的,尤其是Web开发人员和使用其他RIA平台的开发人员。另一个优点是,FXML是不是编译语言,你不需要重新编译代码就可看到您所做的更改。FXML的第三个优势是很容易看到应用程序的场景结构图。反过来,这更容易完成开发团队成员之间合作的用户界面。

stage = new Stage()

stage.initModality(Modality.APPLICATION_MODAL)

stage.initStyle(StageStyle.TRANSPARENT)//这是让弹出窗口透明,如果不设置stage透明,stackpane再怎么设置也没用。

FXML:

<StackPane

style="-fx-border-radius:8px-fx-opacity: 0.4-fx-background-color: black "

xmlns="Java SE | Oracle Technology Network" xmlns:fx="Java SE | Oracle Technology Network"

>

fxml里用css样式 -fx-opacity: 0.4控制stackpane半透明

以上方法stage显示后是半透明遮罩效果,但是我想要在stackpane中间一块区域里放输入对话框,结果输入部分还是半透明的效果,还未能解决

追加----换了下实现方式,就是在primaryStage布局中用stackpane,在stackpane的children中添加一个半透明的pane,<Pane fx:id="main_mask" style="-fx-border-radius:8px-fx-opacity: 0.4-fx-background-color: black " visible="false" />,默认不显示;在显示弹出的stage时,再通过代码设置main_mask显示,在关闭弹出stage时,隐藏main_mask,这样能达到想要的效果了,但是这样的缺点是不通用,组件不独立,想办法改进中