Instanzenproblem

Status
Nicht offen für weitere Antworten.

webraccoon

Mitglied
Hallo Forum,

ich glaube, ich habe noch ein grundlegendes Verständisproblem was die Zusammenarbeit zwischen Klassen bzw. deren Instanzen angeht.

Ich habe mal folgendes einfaches Konstrukt zum Probieren gebaut:

Code:
public class Start {

	public Start(){
		new Ausgabe();
		
	}
	
	
	public static void main(String[] args) {
		new Start();

	}

}

Code:
public class Ausgabe extends ShellMain {
	

	public Ausgabe(){
		//new Tab1();
		print();
		
		
		
	}
	
	public void print(){
		System.out.println("Ausgabe aufgerufen");
	}	

}

Code:
public class Tab1 extends ShellMain {
	

	public Tab1(){		
		print();
		
	}
	
	public void print(){
		System.out.println("Tab1 aufgerufen");
	}

}

Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;

public class ShellMain {
	
	Display display = new Display();
    Shell shell = new Shell(display);
    TabFolder tFolder = new TabFolder(shell, SWT.NONE);

}

Das Problem das ich nun habe besteht in dem Aufruf von new Tab1(); in der Klasse Ausgabe. Es wird ein "Invalid thread Access" ausgegeben. Das gleiche, wenn ich versuche new Tab1(); in der Klasse Start zu erzeugen.

Was ist daran falsch? Wie kann ich und vor allem wo eine Instanz der Klasse Tab1 erzeugen?

Bin dankbar für jede Anregung
Gruss
webraccoon
 

mattulla

Bekanntes Mitglied
hmmm also das Problem liegt wohl in deiner Klasse ShellMain, sowohl die Klasse Ausgabe als auch die Klasse Tab1 erben ShellMain. Zunaechst legst du eine Instanz von Ausgabe an und dann versuchst du eine Instanz von Tab1 anzulegen.
Ich wuerde behaupten wenn du es umgekehrt machst also erst Tab1 und dann Ausgabe funktioniert Ausgabe nicht. Das haengt wie gesagt wohl mit der Klasse ShellMain zusammen. Leider kenn ich mich mit den dort verwendeten Objekten wie Shell kenn ich nicht aus, dort ist das Problem aber wahrscheinlich wohl zu suchen.
 

webraccoon

Mitglied
Hi,

Du hast recht, wenn ich die Instanzvariablen in ShellMain auskommentiere bekomme ich beide Ausgaben.

Dann funktioniert aber meine Idee nicht mehr ???:L .

webraccoon
 

webraccoon

Mitglied
Ja sowas denke ich mir auch.
DIe Shell ist auch nicht primär das Problem, sindern eher display.
In einer umfangreicheren Anwendung möchte ich in irgendeiner Klasse auch mal ein neues Fenster öffnen, für das ich die Information display brauche ...

Und dafür benötige ich die Instanzvariablen, oder gibt es da noch einen anderen Konstrukt :roll: ???

webraccoon
 

SamHotte

Top Contributor
Generell kann man von überall aus 'Display.getCurrent()' sowie 'Display.getCurrent().getActiveShell()' benutzen, da braucht man die Referenzen nicht überall mit 'rumzuschleppen.
 

webraccoon

Mitglied
Sehr gut. So funktioniert es.
Hatte grade überlegt, daß man display natürlich auch mit übergeben kann, aber so ist das wesentlich eleganter.

Danke Dir.
Gruss
webraccoon
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben