javaFX圈在布局中不可见

时间:2017-07-09 16:01:59

标签: java css javafx

我做了一个圆圈,并在小时候加入了一个小组。然后我将该组作为子项添加到布局(Region)。我将Region添加到了场景中。我用不同的颜色制作了两个但我看不到圆圈

Analog_clock.java

package analog_clock;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class Analog_clock extends Application {

    @Override
    public void start(Stage primaryStage) {

        Circle circle = new Circle();
        circle.setCenterX(100.0f);
        circle.setCenterY(100.0f);
        circle.setRadius(50.0f);
        circle.setFill(Color.ALICEBLUE);

        Group g = new Group();
        g.getChildren().add(circle);

        Background_region_ bg = new Background_region_();
        bg.getChildrenUnmodifiable().add(g);

        Scene scene = new Scene(bg, 300, 250);
        scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

Background_Region_.java

package analog_clock;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Background_region_ extends Region 
{
    //CONSTRUCTOR
    public Background_region_()
    {
        setStyle("-fx-background-color: #ACACE6");
    }

}

的style.css

.circle{-fx-stroke: #cdd0d7;}

2 个答案:

答案 0 :(得分:2)

问题是Region类只有一个不可修改列表的子项通过其公共API,这意味着,添加子项的唯一方法是将它子类化(例如{ {1}})。所以使用Pane或其他子类,例如:

Pane

enter image description here

答案 1 :(得分:1)

使用窗格而不是区域。 Region是控件开发人员的特殊父类。

下一行会在您的代码中抛出异常:

bg.getChildrenUnmodifiable().add(g);

注意单词" Unmodifiable"。这意味着你不应该,也不能修改这个列表。