这应该是一个相对简单的问题,但它让我疯了。我正在尝试在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将拥有大量其他属性,因此需要自己成为一个类。
我做错了什么,不允许显示框?
提前感谢您的帮助和考虑。
答案 0 :(得分:2)
您在Rectangle
课程中创建了新的Box
。此Rectangle
未添加到任何Parent
容器中,因此不可见。
将您的代码更改为:
public Box() {
super(100, 100, 100, 100);
setFill(Color.BLUE);
}