在场景构建器

时间:2017-11-01 08:28:16

标签: css javafx scenebuilder

我是Scene Builder和JavaFXML的新手。当我在我的Anchor Pane中添加一个Label时,我无法更改Text的字体和它的颜色。这两个选项都是灰色的,旁边有这个CSS标题。 我怎么能不禁用这些选项?这也是按钮的情况。

Screenshot of disabled Font and TextFill on Scene Builder

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>

3 个答案:

答案 0 :(得分:3)

将外部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...完成。

应用样式表后,可以锁定某些设置,这意味着该值已在css文件中设置。

Scene Builder偏好设置

Scene Builder有一个内部首选项系统,可以跟踪最近使用的FXML文件的不同设置。

对于它保存的每个文件:

  • 名称
  • 路径
  • X,Y,宽度和高度
  • 分隔符位置,可见窗格
  • ...
  • 并将外部样式表文件添加到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/...

答案 1 :(得分:1)

创建一个css文件并添加此样式:

.label {}

保存文件并打开SceneBuilder,转到预览 - &gt;场景样式表 - &gt;添加样式表... 选择.css文件并尝试...

enter image description here

答案 2 :(得分:0)

如果您转到

'preview' -> 'Themes' 

您可能选择了非FX主题,例如Gluon Mobile light。 只需选择Modena,您的所有属性将再次启用。

选择不禁用CSS操作的主题: