我是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)根本不起作用。我很抱歉这么愚蠢的问题,但我真的不知道为什么会这样。
祝你有个愉快的一天,并感谢你提前帮助。
答案 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中创建的内部矩形不会放在任何地方!