javafx:构建自己的矩形

时间:2013-11-16 14:43:10

标签: css javafx-2 javafx fxml

我是java / javafx中的新手。无论如何,当谈论标准功能时,一切都很好并且正常工作。今天我尝试创建自己的具有特定行为的矩形,但失败了。

代码非常简单:

package sample;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main2 extends Application {

    //@Override
    public void start(Stage primaryStage) throws Exception {
        Group root = new Group();
        Rectangle myRest1 = new Rectangle(0, 0, 12, 12);
        myRest rect2 = new myRest();

        HBox hBox = new HBox();
        final VBox vBox = new VBox();

        vBox.setPrefSize(500, 500);
        vBox.setStyle("-fx-background-color: yellowgreen");

        vBox.getChildren().add(hBox);
        vBox.getChildren().add(myRest1);
        vBox.getChildren().add(rect2);

        primaryStage.setTitle("Rectangles");
        root.getChildren().add(vBox);
        primaryStage.setScene(new Scene(root, 500, 500));
        primaryStage.show();
    }

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

class myRest extends Rectangle {

    Rectangle rect = new Rectangle(0, 0, 100, 100);
}

为什么标准矩形工作正常,但我自己的(myRest)根本不起作用。我很抱歉这么愚蠢的问题,但我真的不知道为什么会这样。

祝你有个愉快的一天,并感谢你提前帮助。

2 个答案:

答案 0 :(得分:2)

myRest rect2 = new myRest();

此行调用myRest的默认构造函数。因为您没有在自己的类中指定构造函数,所以它会调用Rectangle的默认构造函数。像这样覆盖你的类中的这个构造函数

class myRest extends Rectangle {

   public myRest()
   {
       super(100,100); //for fixed dimensions
   }

}

您的第Rectangle rect = new Rectangle(0, 0, 100, 100);行创建了一个矩形作为myRest属性

答案 1 :(得分:0)

您没有设置尺寸,您在myRest中创建的内部矩形不会放在任何地方!