如果我有一个扩展具有.setContent(Pane pane)
方法的超类的类,我是否可以在类中更改pane
。
例如:当按下示例按钮时,我想将内容设置为stackPane2
。 (this.setContent(stackPane2);
)。
public class AClass extends SomeClass{
public AClass(){
super();
HBox hBox = new HBox();
Button exampleButton = new Button("Example");
exampleButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
//Change the content here
}
});
StackPane stackPane1 = new StackPane();
stackPane1.getChildren().addAll(hBox);
StackPane stackPane2 = new StackPane();
stackPane2.getChildren().add(/*Some other stuff*/);
this.setContent(stackPane1);
}
}
可以这样做吗?如果是这样,怎么样?否则可能是一种可能的解决方法。
答案 0 :(得分:0)
我不确定我是否遗漏了某些内容,但我认为如果您没有更多代码,最简单的方法是将stackPane1
和stackPane2
声明为最终字段,然后从按钮监听器中调用setContent
。
public class AClass extends SomeClass{
private final StackPane stackPane1;
private final StackPane stackPane2;
public AClass(){
super();
HBox hBox = new HBox();
Button exampleButton = new Button("Example");
exampleButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
if (somenthingHapper()) {
this.setContent(stackPane1);
} else {
this.setContent(stackPane2);
}
}
});
stackPane1 = new StackPane();
stackPane1.getChildren().addAll(hBox);
stackPane2 = new StackPane();
stackPane2.getChildren().add(/*Some other stuff*/);
this.setContent(stackPane1);
}
}