に割り当てるペイン内からの私のモーダルウィンドウオブジェクトを閉じると、重要なものはここにいる:が、私はそれ
show();
hide();
getContent();
setContent(Pane p);
私はモーダルウィンドウのインスタンスを作成し、私はsetContent(...);所定のPaneオブジェクト(ModalWindowインスタンスの作成後に生成されるオブジェクト)を使用して、show();を呼び出します。 hide();この方法は、公的にアクセス可能な一方で、通常は事前に生成されたウィンドウ内から呼び出される - 私は(のようなもの)
getPane(ModalWindow mW);
私は(非表示にアクセスできるように、私はこれを行う)と呼ばれる別の方法を使用してこれを行います。ペインオブジェクト内から関数(私の場合は私のペインは、通常、モーダルウィンドウを閉じるためのボタンが含まれている、私はそう
closeButton.setOnMouseClicked(event -> mW.hide());
を使用してこれを行うには、今、モーダルウィンドウの私のインスタンスのほとんどは、次のようになります。
を私は思ったんだけど何ModalWindow mW = new ModalWindow();
mW.setContent(getPane(mW));
mW.show(); // ModalWindow usually closed from within itself
は次のとおりです。作成後]ペインのオブジェクトを生成することなく、ペインが(に含まれていることをモーダルウィンドウオブジェクトにアクセスするためにリフレクション(またはその自然の何か)を使用する方法がありますModalWindowインスタンス)?
ここは完全です例:
public class Main {
public static void main(String[] args) {
ModalWindow mW = new ModalWindow();
mW.setContent(PaneHolder.getPane(mW));
mW.show();
}
}
public class ModalWindow {
StackPane centeringPane = new StackPane();
private BooleanProperty showing = new SimpleBooleanProperty(false);
public ModalWindow() {
centeringPane.setOpacity(0);
centeringPane.setAlignment(Pos.CENTER);
}
public ModalWindow(Pane content) {
centeringPane.setOpacity(0);
centeringPane.setAlignment(Pos.CENTER);
setContent(content);
}
public void show() {
centeringPane.setVisible(true);
}
public void hide() {
centeringPane.setVisible(false);
}
public boolean isShowing() {
return showing.get();
}
public BooleanProperty showingProperty() {
return showing;
}
public void setShowing(boolean showing) {
this.showing.set(showing);
}
public Pane getContent() {
return (Pane) centeringPane.getChildren().get(0);
}
public void setContent(Pane content) {
centeringPane.getChildren().clear();
centeringPane.getChildren().add(content);
}
}
public class PaneHolder {
Pane getPane(ModalWindow mW) {
Pane p = new Pane();
Button closeButton = new Button("Close");
closeButton.setOnAction(event -> mW.hide()); // I need the reference to mW here
p.getChildren.add(closeButton);
return p;
}
}
要するに、オブジェクトがオブジェクトへの参照を保持している他のオブジェクトを発見する方法はありません(これはあなたがやろうとしていることです)。 (とにかく、このような 'ModalWindow'は1つしかないのはどうでしょうか?)おそらくあなたは実際のコードを投稿することができますか? –
@James_D私は完全な例を追加しましたが、あなたは何を得ているのか分かります。 –