Wie zur Laufzeit auf Objekte zugreifen

_Andi91

Bekanntes Mitglied
Hi,

ich möchte folgendes machen. Ich hab zB eine Klasse die so aussieht:

Java:
public class Gui
{
	public static void main(String[] args)
	{
		JFrame frame = new JFrame("Test");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JTextField tf = new JTextField();
		frame.add(tf);
		
		frame.pack();
		frame.setVisible(true);
	}
}

Jetzt möchte ich eine neue Klasse schreiben, vor der aus ich die main Methode der Gui Klasse aufrufe. Und da will ich mir dann sozusagen die JFrame Instanz (frame) raus ziehen.
Wie kann man sowas machen?

Hintergrund ist folgender:
Es gibt (jetzt von Google) das Programm Window Tester. Damit kann man automatisierte Tests für Guis erstellen (JUnit Tests). Der geht anscheined genauso vor.
Ich würde gern selber so ein Test Tool schreiben, weil ich den Window Tester nicht wirklich brauchbar finde.


mfg, Andi
 
B

bone2

Gast
Du musst deinen JFrame als public membervariable oben in der klasse initialisieren und nicht innerhalb der main methode
 
S

SlaterB

Gast
um Himmels Willen, du verstehst nicht die einfachsten Grundlagen und willst Test-Tools schreiben?

um an ein von einer Methode erstelltes Objekt zu kommen, lasse dieses z.B. als Rückgabwert zurückgeben,
die main-Methode bietet sich dafür nicht an, aber du kannst ja den Code in eine Methode
> public JFrame createFrame()
auslagern
 
Zuletzt bearbeitet von einem Moderator:

Andi_CH

Top Contributor
Ich glaube zwar nicht, dass es viel bringt, aber bitte ....

Java:
public class Test {
	public static void main(String[] args) {
		Gui.main(null);
	}
}
 

_Andi91

Bekanntes Mitglied
um Himmels Willen, du verstehst nicht die einfachsten Grundlagen und willst Test-Tools schreiben?

um an ein von einer Methode erstelltes Objekt zu kommen, lasse dieses z.B. als Rückgabwert zurückgeben,
die main-Methode bietet sich dafür nicht an, aber du kannst ja den Code in eine Methode
> public JFrame createFrame()
auslagern

Ich glaube wir reden hier ein bisschen aneinander vorbei.
Ich verstehe sehr wohl die einfachsten Grundlagen ;)
Die Problematik hierbei ist einfach, dass ich den Code nicht anlangen will. D.h. ich will weder eine Methode, die mir ein JFrame zurück gibt noch das JFrame als public Variable oder sonst was deklarieren.


Beim Window Tester sieht das ganze zB einfach nur so aus:

Java:
public class Test extends UITestCaseSwing
{
	/**
	 * Create an Instance
	 */
	public Test()
	{
		super(hka.app.ApplicationMain.class);
	}

	/**
	 * Main test method.
	 */
	public void test() throws Exception
	{
		IUIContext ui = getUI();
		System.out.println(ui.getActiveWindow());
	}
}


D.h. ich übergebe nur die Klasse die meine gui startet.
Und irgendwie wird das JFrame, dass dort in der main instanziiert wird in den IUIContext geschrieben.
Die Frage ist jetzt wie?


Die Ausgabe in dem Fall ist jetzt zB:

Code:
hka.app.CalculatorV[frame0,100,100,334x725,layout=java.awt.BorderLayout,title=Kalkulation,resizable,normal,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=javax.swing.JRootPane[,4,30,326x691,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
 

tfa

Top Contributor
Grundsätzlich kann man "von Außen" nicht auf lokale Variablen zugreifen.
Wenn es dir aber nur um Frames geht, kannst du [c]Frame.getFrames()[/c] verwenden und dir da das passenden JFrame raussuchen. Das erscheint mir vom Konzept aber zweifelhaft. Deine Gui-Klasse sollte schon auch auf Testbarkeit entworfen sein.
 

_Andi91

Bekanntes Mitglied
Ah ok, das schaut ganz gut aus.
Hatte mir jetzt schon selber so ein Konstrukt geschrieben, dass mir alle instanziierten JFrames in eine Singleton Klasse speichert. Aber wenns das eh schon gibt ist es ja ok.
 
S

SlaterB

Gast
noch eine Möglichkeit zeigt
Java:
public class TestGUI  extends JFrame {
    public TestGUI()  {
        setSize(350, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()  {
                public void eventDispatched(AWTEvent event)  {
                    System.out.println(event.getSource());
                }
            }, AWTEvent.COMPONENT_EVENT_MASK);
        new TestGUI();
    }
}
dort bekommt der Listener Events mit, über diesen Wege erhält man allerlei Infos zu GUI-Komponenten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
M Laufzeit LinkedList Allgemeine Java-Themen 9
M verbesserte Laufzeit bei LinkedList Allgemeine Java-Themen 7
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
H was ist den dieses zur Kompilierzeit und zur Laufzeit in Java? Allgemeine Java-Themen 3
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
L Compiler-Fehler Google Guice Module zur Laufzeit zusammenstellen und binden Allgemeine Java-Themen 4
J Jasper Reports - Subreport zur Laufzeit ändern Allgemeine Java-Themen 6
O jar und EXE Dateien, Pfade zur Laufzeit Allgemeine Java-Themen 1
T Externe Java Klasen zur Laufzeit einbinden Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
M Sinn von Kompilierung zur Laufzeit Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Laufzeit Primzahlgenerator Allgemeine Java-Themen 18
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
F Classpath Programmteile zur Laufzeit nachladen Allgemeine Java-Themen 6
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
J Input/Output Jar-Datei zur Laufzeit erweitern Allgemeine Java-Themen 13
P Generic zur Laufzeit Allgemeine Java-Themen 4
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
X MergeSort Laufzeit Problem Allgemeine Java-Themen 4
J Resourcen waehrend der Laufzeit aendern? Allgemeine Java-Themen 9
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
T Klassen Fabrik (Factory) zur Laufzeit erweitern Allgemeine Java-Themen 5
S UML zur Laufzeit ändern Allgemeine Java-Themen 10
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
L Methode in Thread mit langer Laufzeit unterbrechen (ANT executeTarget) Allgemeine Java-Themen 4
O Problem bei Darstellung der Laufzeit eines Programms Allgemeine Java-Themen 3
hdi Ressourcen dynamisch zur Laufzeit laden Allgemeine Java-Themen 15
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
P Klassenwahl zur Laufzeit Allgemeine Java-Themen 5
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
Stillmatic Debuggen/ Laufzeit von Methoden Allgemeine Java-Themen 2
Dragonfire Generic Typ zur Laufzeit Allgemeine Java-Themen 9
M Klasse zur Laufzeit ersetzen Allgemeine Java-Themen 10
S Wie gross ist die Laufzeit für diese Schleife?? Allgemeine Java-Themen 8
G File zur Laufzeit erzeugen Allgemeine Java-Themen 4
G Jar File zur Laufzeit ändern. Allgemeine Java-Themen 4
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
Y JARs austauschen zur Laufzeit Allgemeine Java-Themen 11
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
C Innere Klassen zur Laufzeit Instanzieren Allgemeine Java-Themen 4
T Zur Laufzeit erben? Allgemeine Java-Themen 22
L Zur Laufzeit eine Klasse laden, die auf jar-File zugreift Allgemeine Java-Themen 15
V Java-Programm weiss zur Laufzeit wie es gestartet wurde? Allgemeine Java-Themen 6
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Eindeutiges Identifizieren einer JTable/Component z.laufzeit Allgemeine Java-Themen 2
G Datei durchsuchen, lange Laufzeit! Allgemeine Java-Themen 2
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
Apo Zur Laufzeit Klassen mit Packages laden? Allgemeine Java-Themen 2
G genauen Typ einer generischen Klasse zur Laufzeit ermitteln Allgemeine Java-Themen 2
F Typ eines Objekts zur Laufzeit bestimmen? Allgemeine Java-Themen 8
T xverify-parameter : Workaround zur Laufzeit? Allgemeine Java-Themen 8
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
G Klasse wird zur Laufzeit nicht gefunden? Allgemeine Java-Themen 3
@ zur Laufzeit Interface aus jar implementieren? Allgemeine Java-Themen 5
MQue Laufzeit Allgemeine Java-Themen 4
D Lautstärke einzelner AudioClips zur Laufzeit verändern Allgemeine Java-Themen 4
C Mathefunktion zur Laufzeit einlesen und dann verarbeiten Allgemeine Java-Themen 13
G Klassen zur Laufzeit einbinden Allgemeine Java-Themen 3
J Bibliotheken erst zur Laufzeit laden Allgemeine Java-Themen 5
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
byte Generic Type einer List zur Laufzeit rausfinden? Allgemeine Java-Themen 4
A Class File zur Laufzeit laden ohne den Binary Name zu kennen Allgemeine Java-Themen 11
M Überprüfen einer zur Laufzeit geladenen Klasse Allgemeine Java-Themen 3
H Klassen aus einem Ordner zur Laufzeit laden. Allgemeine Java-Themen 6
S Laufzeit und Compilefehler Allgemeine Java-Themen 6
S JPanel zur Laufzeit verbergen bzw. wieder anzeigen lassen Allgemeine Java-Themen 4
F Objektname zur Laufzeit festlegen? Allgemeine Java-Themen 12
I Sprache zur Laufzeit des Programms ändern Allgemeine Java-Themen 3
G Laufzeit eines aus Java gestarteten Programms beobachten Allgemeine Java-Themen 3
S Log4J: Logdatei zur Laufzeit ermitteln. Allgemeine Java-Themen 2
I Zur Laufzeit ermitteln, ob Klasse in JAR-Datei Allgemeine Java-Themen 2
R iText.jar wird zur Laufzeit nicht gefunden Allgemeine Java-Themen 4
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
H Methode einer zur Laufzeit generierten Instanz aufrufen Allgemeine Java-Themen 2
M Formel in einem String während Laufzeit berechnen. Allgemeine Java-Themen 4
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34

Ähnliche Java Themen

Neue Themen


Oben