Wechseln von Sash componenten

mcbass

Mitglied
Hallo,

Ich habe ein kleines Problem mit der Sash Componente.
Ich möchte gerne einen Sash mit 2 Fenstern bauen, was im prinzip auch einfach klappt.

Code:
 final SashForm sashForm = new SashForm(shell, SWT.NONE);
 
 final Browser browser_1 = new Browser(sashForm, SWT.NONE);
 browser_1.setUrl("http://www.eclipse.org");
 
 final Browser browser_2 = new Browser(sashForm, SWT.NONE);
 browser_2.setUrl("http://www.eclipse.org");
 
 sashForm.setWeights(new int[] { 1, 1 });

Nun würde ich aber gerne "browser_1" durch eine composite ersetzten. Jemand eine Idee wie ich "browser_1" zerstöre und statt dessen ein composite dran hänge ? Nun ist der Trick aber das composite auch an die selbe stelle zu klemmen und nicht einfach hinter "browser_2"

Danke
 
Hallo!

Eine Variante wäre bespielsweise die, dass du die Browser jeweils selbst in eine Composite legst und die dann auf die Sash bringst. Dann könntest du einfach das jeweilige Browser Widget von der jeweiligen Composite entfernen und dein neues Widget/Composite einsetzen.

Gruß Tom
 
Ok, danke, aber irgendwie muss ich doch "browser_1" los werden, bzw, wenn ich "browser_1" ind einem composite habe, muss ich das doch erst leeren ? So hänge ich "browser_3" doch nur dran.

Code:
 	protected void createContents () {
 		shell = new Shell();
 		shell.setLayout(new FillLayout());
 		shell.setSize(500, 375);
 
 		final SashForm sashForm = new SashForm(shell, SWT.NONE);
 
 		composite_1 = new Composite(sashForm, SWT.NONE);
 		composite_1.setLayout(new FillLayout());
 		composite_1.setBounds(210, 170, 120, 30);
 
 		final Browser browser_1 = new Browser(composite_1, SWT.NONE);
 		browser_1.setUrl("http://www.java.com");
 
 		final Composite composite_2 = new Composite(sashForm, SWT.NONE);
 		composite_2.setLayout(new FillLayout());
 
 		final Browser browser = new Browser(composite_2, SWT.NONE);
 		browser.setUrl("http://www.heise.de");
 		
 		switchComp();
 	 }
 	
 	
 	
 	private void switchComp() { 
 		final Browser browser_3 = new Browser(composite_1, SWT.NONE);
 		browser_3.setUrl("http://www.cnn.com");
 	}

Danke
 
Hallo,

ja genau da war ich bevor ich das Thema erstellt habe ;)

Dummerweise scheint das auch in meinem kleinen Beispiel zu funktionieren, nur in dem was ich eigentlich machen will nicht. Dachte es gibt da nochwas anderes was ich versuchen könnte.

Danke trotzdem, dann muss ich wohl mal weiter schauen.
 
Noch ne kleine Frage, wenn ich in meinem composite ein anderes composite habe, das ich wiederum durch ein weiteres composite ersetzen will, muss ich dann alle Elemente in meiner Composite mit dispose zerstören, bevor ich das Composite ansich zerstöre, oder macht das der GC ?
 

Neue Beiträge

Zurück