为什么我的对象没有显示在JavaFX中?

时间:2016-05-14 15:09:17

标签: java javafx

这应该是一个相对简单的问题,但它让我疯了。我正在尝试在JavaFX中创建Mine Sweeper(主要仅用于练习)但我甚至无法获得一个简单的矩形来显示。我曾经让游戏运行过一次,但我试图让游戏更抽象,因此更容易编码,但我遇到的问题是没有显示。

我删除了所有无关的代码,因此它尽可能简单。我基本上尝试创建一个名为Box的具有特定颜色和大小的Rectangle,将该框添加到窗格,然后显示该窗格。为了使Box成为可以在窗格上显示的节点,我使Box类扩展了Rectangle,这样Box就具有与Rectangle相同的属性。但是当我运行代码时,它只给出一个没有框的空窗格。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Minesweeper extends Application {

    @Override
    public void start(Stage stage) {

        Pane pane = new Pane();

        Box box = new Box();

        pane.getChildren().addAll(box);     

        // Create the scene
        Scene scene = new Scene(pane);
        stage.setTitle("Minesweeper");
        stage.setScene(scene);
        stage.show();

    }

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

}

import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;

public class Box extends Rectangle {

    public Box() {

        Rectangle box = new Rectangle(100, 100, 100, 100);

        box.setFill(Color.BLUE);

    }

}

我意识到如果我将Box中的代码放入主要的Minesweeper类中,它将显示该框。但是Box将拥有大量其他属性,因此需要自己成为一个类。

我做错了什么,不允许显示框?

提前感谢您的帮助和考虑。

1 个答案:

答案 0 :(得分:2)

您在Rectangle课程中创建了新的Box。此Rectangle未添加到任何Parent容器中,因此不可见。 将您的代码更改为:

    public Box() {
        super(100, 100, 100, 100);
        setFill(Color.BLUE);
    }