场景构建器上禁用标签字体和文本填充
Label Font and Text Fill disabled on Scene builder
我对 Scene Builder 和 JavaFXML 还很陌生。当我将标签添加到我的锚定窗格时,我无法更改文本的字体和颜色。这两个选项都变灰了,旁边有这个 CSS 标题。
我怎样才能不禁用这些选项?按钮也是如此。
FXML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="672.0" prefWidth="176.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
<children>
<AnchorPane prefHeight="188.0" prefWidth="176.0" style="-fx-background-color: #1c94d900;">
<children>
<Label fx:id="StudentUSN" layoutX="15.0" layoutY="145.0" prefHeight="24.0" prefWidth="146.0" />
</children>
</AnchorPane>
<VBox prefHeight="464.0" prefWidth="176.0">
<children>
<JFXButton fx:id="b1" prefHeight="44.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Attendance" />
<JFXButton fx:id="b2" disable="true" prefHeight="44.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Clubs" />
<JFXButton fx:id="b3" disable="true" prefHeight="48.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Results" />
<JFXButton fx:id="b4" disable="true" prefHeight="48.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Feedback" />
</children>
</VBox>
</children>
</VBox>
将外部 CSS 应用于 FXML
给定简单测试:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<children>
<Label layoutX="448.0" layoutY="49.0" text="Label" />
</children>
</AnchorPane>
和一个单独的 css 文件:
.label {
-fx-font-family: Roboto;
-fx-text-fill: grey;
}
无需在 FXML 文件中捆绑 CSS 文件,您可以将其添加到 Scene Builder,因此它会将样式应用于预览。
这可以从 Preview->Scene Style Sheets->Add a Style Sheet...
完成。
应用样式 sheet 后,可以锁定某些设置,这意味着该值已在 css 文件中设置。
Scene Builder 首选项
Scene Builder 有一个内部首选项系统,可以跟踪最近使用的 FXML 文件的不同设置。
对于它保存的每个文件:
- 姓名
- 路径
- X、Y、宽度和高度
- 分隔线位置,可见窗格
- ...
- 并将外部样式 sheets 文件添加到 FXML 文件。
这意味着如果您关闭 Scene Builder,几天后您回来打开同一个 FXML 文件时,所有这些首选项都将恢复并应用。
在 OP 发布的案例中,由于某些未知原因,删除了 css 文件,但仍然应用了锁定。
所以这种情况下的快速修复只是编辑首选项文件,并删除文档条目。它的所有设置都将丢失,但那里没有真正重要的东西。
正在查找首选项文件
在 Mac,可以在此处找到该文件:
/Users/<user>/Library/Preferences/com.oracle.javafx.plist
可以用Xcode编辑。
在 Windows 上,可以在注册表中的此项找到首选项:
HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\oracle\javafx
并且可以用Regedit编辑。
在 Linux(可能)
${user.home}/.java/.userPrefs/...
创建一个 css 文件并添加此样式:
.label {}
保存文件并打开 SceneBuilder,转到预览-> 场景样式 Sheets-> 添加样式 Sheet...
Select 你的 .css 文件并尝试...
enter image description here
如果你去
'preview' -> 'Themes'
您可能 select 编辑了一个非 fx 主题,例如 Gluon Mobile light。
只需 select 摩德纳,您的所有属性将再次启用。
Select 不禁用 CSS 操作的主题:
我对 Scene Builder 和 JavaFXML 还很陌生。当我将标签添加到我的锚定窗格时,我无法更改文本的字体和颜色。这两个选项都变灰了,旁边有这个 CSS 标题。 我怎样才能不禁用这些选项?按钮也是如此。
FXML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="672.0" prefWidth="176.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
<children>
<AnchorPane prefHeight="188.0" prefWidth="176.0" style="-fx-background-color: #1c94d900;">
<children>
<Label fx:id="StudentUSN" layoutX="15.0" layoutY="145.0" prefHeight="24.0" prefWidth="146.0" />
</children>
</AnchorPane>
<VBox prefHeight="464.0" prefWidth="176.0">
<children>
<JFXButton fx:id="b1" prefHeight="44.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Attendance" />
<JFXButton fx:id="b2" disable="true" prefHeight="44.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Clubs" />
<JFXButton fx:id="b3" disable="true" prefHeight="48.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Results" />
<JFXButton fx:id="b4" disable="true" prefHeight="48.0" prefWidth="176.0" style="-fx-background-color: #1156cf;" text="Feedback" />
</children>
</VBox>
</children>
</VBox>
将外部 CSS 应用于 FXML
给定简单测试:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<children>
<Label layoutX="448.0" layoutY="49.0" text="Label" />
</children>
</AnchorPane>
和一个单独的 css 文件:
.label {
-fx-font-family: Roboto;
-fx-text-fill: grey;
}
无需在 FXML 文件中捆绑 CSS 文件,您可以将其添加到 Scene Builder,因此它会将样式应用于预览。
这可以从 Preview->Scene Style Sheets->Add a Style Sheet...
完成。
应用样式 sheet 后,可以锁定某些设置,这意味着该值已在 css 文件中设置。
Scene Builder 首选项
Scene Builder 有一个内部首选项系统,可以跟踪最近使用的 FXML 文件的不同设置。
对于它保存的每个文件:
- 姓名
- 路径
- X、Y、宽度和高度
- 分隔线位置,可见窗格
- ...
- 并将外部样式 sheets 文件添加到 FXML 文件。
这意味着如果您关闭 Scene Builder,几天后您回来打开同一个 FXML 文件时,所有这些首选项都将恢复并应用。
在 OP 发布的案例中,由于某些未知原因,删除了 css 文件,但仍然应用了锁定。
所以这种情况下的快速修复只是编辑首选项文件,并删除文档条目。它的所有设置都将丢失,但那里没有真正重要的东西。
正在查找首选项文件
在 Mac,可以在此处找到该文件:
/Users/<user>/Library/Preferences/com.oracle.javafx.plist
可以用Xcode编辑。
在 Windows 上,可以在注册表中的此项找到首选项:
HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\oracle\javafx
并且可以用Regedit编辑。
在 Linux(可能)
${user.home}/.java/.userPrefs/...
创建一个 css 文件并添加此样式:
.label {}
保存文件并打开 SceneBuilder,转到预览-> 场景样式 Sheets-> 添加样式 Sheet... Select 你的 .css 文件并尝试...
enter image description here
如果你去
'preview' -> 'Themes'
您可能 select 编辑了一个非 fx 主题,例如 Gluon Mobile light。 只需 select 摩德纳,您的所有属性将再次启用。
Select 不禁用 CSS 操作的主题: