SingleFrameApplication - MainFrame in der ganzen Applikation

hesk

Erfahrenes Mitglied
Hallo!

Momentan hole ich mir das mainFrame mit

Klasse xyz:
Code:
JFrame mainFrame = Application.getInstance(test.main.HelperMain.class).getMainFrame();

Wobei HelperMain der FrameView ist.

Gibt es eine Möglichkeit sich den MainFrame zu holen ohne die Klasse angeben zu müssen.
Denn wenn man die Klasse xyz in einer anderen SingleFrameApplikation verwenden möchte, dann wirft er eine ClastCastException.
 
Es geht um einige Dialogs die ich während der Applikation aufrufe.
Dort möchte ich ein setRelativeTo setzen, und das soll sich immer auf das mainFrame beziehen.
 
Warum übergibst du das JFrame dann nicht einfach an den Dialog?

Andernfalls, falls du wieder nicht so viele Parameter übergeben willst, kannst du das auch folgendermaßen realisieren:

Code:
import javax.swing.JFrame;

public class JWindow extends JFrame
{
	private static JFrame mainFrame;
	
	public JWindow() {
		super("Test");
		mainFrame = this;
	}

	/**
	 * @return the mainFrame
	 */
	public static JFrame getMainFrame() {
		return mainFrame;
	}
}

Dann musst du im Dialog natürlich nur noch vom Frame die Position abfragen und kannst anschließen die Position des Dialogs bestimmen.
 
Nach deinem Code müßte dann in jeder Applikation die Klasse mit dem FrameView gleich heißen.

Denn in der Klasse xyz verwende ich dann JWindow.getMainFrame();

Ich möchte aber unabhängig davon wie die FrameView-Klasse heißt das mainFrame bekommen.
 
Das geht nicht (nichts das mir bekannt wäre). Du kannst nicht auf die Klasse JWindow/JFrame zugreifen, wenn du nicht über JWindow gehst. Selbst wenn du dir die Klasse JWindow via den ClassLoader in der jeweiligen Klasse lädst, musst du auch den JWindow-Pfad angeben.
 
Ich muss mich mal eben selber korrigieren, es geht doch. Wenn du es wie in meinem Beispiel machst und dann in den jeweiligen Klassen (in denen du auf JWindow zugreifst) die Methode getMainFrame() als static import einbindest. Das geht wie folgt:

Java:
import static de.tutorials.JWindow.getMainFrame;

Ich hoffe das ist das was du brauchst.
 
SingleFrameApplication - MainFrame ...

Hallo,

Es gibt doch eine getInstance-Methode, die kein Class-Objekt erfordert. Warum nutzt du nicht diese?


Gruß

Sascha
 
Ich muss mich mal eben selber korrigieren, es geht doch. Wenn du es wie in meinem Beispiel machst und dann in den jeweiligen Klassen (in denen du auf JWindow zugreifst) die Methode getMainFrame() als static import einbindest. Das geht wie folgt:

Java:
import static de.tutorials.JWindow.getMainFrame;

Ich hoffe das ist das was du brauchst.


Das ist leider nicht das was ich möchte.

Das Ziel:

Ich hab 2 Applikationen:

App1
App2

Beide haben unterschiedliche FrameView-Klassen.
Beide verwenden irgendwo die Klasse xyz.

In der Klasse xyz möchte ich nun das mainFrame von der Applikation bekommen.
Da die Klasse xyz in beiden Applikationen verwendet wird, kann ich nicht per .getInstace(...class) drauf zugreifen, weil ich ja nicht weiß welche Klasse es ist.

Ich bräuchte quasi eine Funktion in der Applikation, wo ich sage setMainFrame( app1-FrameView).
Und in der xyz-Klasse dann: Application.getMainFrame().

Hoffe jetzt ist es verständlicher:)
 
Zurück