Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改窗格';什么是来自内部的内容?_Java_Javafx - Fatal编程技术网

Java 更改窗格';什么是来自内部的内容?

Java 更改窗格';什么是来自内部的内容?,java,javafx,Java,Javafx,如果我有一个扩展超类的类,该超类具有.setContent(Pane Pane)方法,那么我是否能够从类内更改窗格 例如:按下示例按钮时,我想将内容设置为stackPane2。(this.setContent(stackPane2);) public类AClass扩展了SomeClass{ 公共AClass(){ 超级(); HBox HBox=新的HBox(); 按钮示例按钮=新按钮(“示例”); setOnAction(新的EventHandler(){ 公共无效句柄(ActionEvent

如果我有一个扩展超类的类,该超类具有
.setContent(Pane Pane)
方法,那么我是否能够从类内更改
窗格

例如:按下示例按钮时,我想将内容设置为
stackPane2
。(
this.setContent(stackPane2);

public类AClass扩展了SomeClass{
公共AClass(){
超级();
HBox HBox=新的HBox();
按钮示例按钮=新按钮(“示例”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent事件){
//在这里更改内容
}
});
StackPane stackPane1=新的StackPane();
stackPane1.getChildren().addAll(hBox);
StackPane stackPane2=新的StackPane();
stackPane2.getChildren().add(/*一些其他东西*/);
此.setContent(stackPane1);
}
}

这能做到吗?如果是,怎么做?否则可能的解决方法是什么。

我不确定是否遗漏了什么,但我认为如果没有太多代码,最简单的方法是将
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);
}
}
public类AClass扩展了SomeClass{
专用最终StackPane stackPane1;
专用最终StackPane stackPane2;
公共AClass(){
超级();
HBox HBox=新的HBox();
按钮示例按钮=新按钮(“示例”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent事件){
if(somethinghapper()){
此.setContent(stackPane1);
}否则{
这个.setContent(stackPane2);
}
}
});
stackPane1=新的StackPane();
stackPane1.getChildren().addAll(hBox);
stackPane2=新的StackPane();
stackPane2.getChildren().add(/*一些其他东西*/);
此.setContent(stackPane1);
}
}

我不确定是否遗漏了什么,但我认为如果没有太多代码,最简单的方法是将
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);
}
}
public类AClass扩展了SomeClass{
专用最终StackPane stackPane1;
专用最终StackPane stackPane2;
公共AClass(){
超级();
HBox HBox=新的HBox();
按钮示例按钮=新按钮(“示例”);
setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent事件){
if(somethinghapper()){
此.setContent(stackPane1);
}否则{
这个.setContent(stackPane2);
}
}
});
stackPane1=新的StackPane();
stackPane1.getChildren().addAll(hBox);
stackPane2=新的StackPane();
stackPane2.getChildren().add(/*一些其他东西*/);
此.setContent(stackPane1);
}
}