【问题标题】:JavaFX: How to give more than one Circle the same size?JavaFX:如何给多个相同大小的圆圈?
【发布时间】:2019-04-09 00:42:09
【问题描述】:

我的问题似乎很简单,但我还没有找到好的方法。我想在我的 FXML 中定义几个圆,10 个圆的半径应为 10px,其他 20 个圆的半径应为 6px。我想一次性声明大小,以便轻松更改。

我不知道是否/如何在 FXML 中声明变量,这将是最简单的方法。所以我希望 CSS 能帮助我,这会更好:我尝试给圆圈两个 styleClasses 并在 CSS 中设置它们的大小,但似乎没有一个属性来缩放圆圈。

<Circle fx:id="c00" centerX="100" centerY="100" styleClass="circle10" /> 

另一个想法是重写 Circle 类并将半径设置为所需的值。但我不认为这是一个干净的代码,因为布局应该使用 FXML 和 CSS,而不是 Java。

必须有一种方法可以做到这一点,而不会在那个地方弄乱 Java 代码。

提前感谢您的每一个帮助! 误会

【问题讨论】:

    标签: java css xml javafx fxml


    【解决方案1】:

    在 FXML 中,如果您想定义一个可以在多个位置使用的变量,请使用 fx:define。来自Introduction to FXML

    &lt;fx:define&gt; 元素用于创建存在于对象层次结构之外但可能需要在其他地方引用的对象。

    例如,在使用单选按钮时,通常定义一个ToggleGroup 来管理按钮的选择状态。该组不是场景图本身的一部分,因此不应添加到按钮的父级。可以使用定义块来创建按钮组,而不会影响文档的整体结构:

    <VBox>
        <fx:define>
            <ToggleGroup fx:id="myToggleGroup"/>
        </fx:define>
        <children>
            <RadioButton text="A" toggleGroup="$myToggleGroup"/>
            <RadioButton text="B" toggleGroup="$myToggleGroup"/>
            <RadioButton text="C" toggleGroup="$myToggleGroup"/>
        </children> 
    </VBox>
    

    define 块中的元素通常被分配一个 ID,该 ID 可用于稍后引用元素的值。 ID 将在后面的部分中更详细地讨论。

    下面是定义Circle 半径的示例:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.Double?>
    <?import javafx.geometry.Insets?>
    <?import javafx.scene.layout.VBox?>
    <?import javafx.scene.shape.Circle?>
    
    <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" spacing="10.0" alignment="CENTER">
    
        <padding>
            <Insets topRightBottomLeft="10.0"/>
        </padding>
    
        <fx:define>
            <Double fx:id="smallRadius" fx:value="50.0"/>
            <Double fx:id="largeRadius" fx:value="100.0"/>
        </fx:define>
    
        <Circle radius="$smallRadius"/>
        <Circle radius="$largeRadius"/>
        <Circle radius="$smallRadius"/>
        <Circle radius="$largeRadius"/>
    
    </VBox>
    

    【讨论】:

    • 感谢您的详细回答,这正是我搜索的内容。不知道为什么我自己找不到它:S
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多