Getter und Setter für eine Stage

Tintenfisch

Bekanntes Mitglied
Hallo,
ich bin möchte Teile der FX Anwendung in separaten Klassen verlegen. Problem dabei ist nur, dass bei manch Funktionen die Stage, z.B. zum binden gefragt ist. Diese wird natürlich in einer Methode einer anderen Klasse nicht erkannt. Ich habe schon versucht dafür einen Getter zu erstellen, nur leider gelingt das nicht so. Nun die Frage, wie erstellt man einen Getter / Setter für eine Stage, bzw. ist dies so überhaupt möglich?
Würde mich sehr über Tipps freuen =).
 
In etwa als Übergabeparameter im Ctor oder als Parameter einer Methode:
Java:
public final class Experiments {

    private Stage stage;

    public Experiments(Stage stage) {
        this.stage = stage;
    }

    public void doSomethingWithStage() {
        this.stage...
    }
    
    public static void doSomethingWithOtherStage(Stage otherStage) {
        otherStage...
    }
}

Experiments experiments = new Experiments(primaryStage);
experiments.doSomethingWithStage();

Experiments.doSomethingWithOtherStage(primaryStage);
 
Danke für die Antwort @Oneixee5.
Hast du vielleicht auch eine Idee, wie man die setCellValueFactory() in einer Methode der Klasse, aus welcher die Column stammt, zusammensetzt?
Folgend mein bisheriges Konstrukt, welches nicht funktioniert. Hatte die letzten Tage schon zahlreiche verschiedene Varianten, nur leider waren die keineswegs funktionell.
Java:
public void cellValueFactory (String name) {
    this.userCol.setCellValueFactory(new PropertyValueFactory <> (name));
    }
 
public static Stage stage

static objekte werden während dem compilen erstellt
dh du machst klasse.stage und hast zugriff auf die stage von allen klassen zu jederzeit
 
public static Stage stage

static objekte werden während dem compilen erstellt
Sorry, wenn da etwas einhake, aber ich fürchte, dass ich das so nicht stehen lassen kann.

a) Die erste Zeile enthält nur eine Variablen Deklaration - da wird keinerlei Objekt erstellt.
b) Die Objekte werden auch generell nur zur Laufzeit erstellt. Die Instanz der Klasse wird somit erst erstellt, wenn darauf zugegriffen wird.

Machen wir einfach mal zwei Klassen zur Verdeutlichung:

[CODE lang="java" title="StaticClass1"]public class StaticClass1 {
public static Object staticObject= init();

private static Object init() {
System.out.println("StaticClass1::init");
return new Object();
}
}
[/CODE]

[CODE lang="java" title="StaticClass2"]public class StaticClass2 {
public static Object staticObject= init();

private static Object init() {
System.out.println("StaticClass2::init");
return new Object();
}

public static void main(String[] args) {
System.out.println("main start ...");
System.out.println(StaticClass2.staticObject);
System.out.println(StaticClass1.staticObject);
}
}
[/CODE]

Wenn man dies aufruft, dann sieht man die Ausgabe von init() der ersten Klasse erst, wenn auch auf diese Klasse zugegriffen wird:
[CODE title="Ausgabe"]StaticClass2::init
main start ...
java.lang.Object@13969fbe
StaticClass1::init
java.lang.Object@3498ed[/CODE]
 
Danke für die Antwort @Oneixee5.
Hast du vielleicht auch eine Idee, wie man die setCellValueFactory() in einer Methode der Klasse, aus welcher die Column stammt, zusammensetzt?
Folgend mein bisheriges Konstrukt, welches nicht funktioniert. Hatte die letzten Tage schon zahlreiche verschiedene Varianten, nur leider waren die keineswegs funktionell.
Java:
public void cellValueFactory (String name) {
    this.userCol.setCellValueFactory(new PropertyValueFactory <> (name));
    }
Sorry, damit kann ich nichts anfangen.
 

Neue Themen


Zurück
Oben