# RCP Views und Swing



## Saxony (25. Jan 2008)

Hiho,

wie kann ich eigentlich eine RCP View(org.eclipse.ui.part.ViewPart) dazu verwenden, dass der Inhalt dieser View ein JFrame/JPanel sein soll ?

Vielen Dank!

bye Saxony


----------



## Wildcard (25. Jan 2008)

Schau mal unter http://www.eclipse.org/swt/snippets/ bei SWT/AWT


----------



## Saxony (30. Jan 2008)

Hiho,

also ich habe mal in meinem jugendlichen Leichtsinn folgendes probiert:


```
@Override
	public void createPartControl(Composite parent) {
			
		final Frame panel = SWT_AWT.new_Frame(parent);

		java.awt.Button button = new java.awt.Button("Click Me");

		panel.add(button);		
	}
```

Leider kommt da ne Exception der Form:



			
				IllegalArgumentException hat gesagt.:
			
		

> java.lang.IllegalArgumentException: Argument not valid
> at org.eclipse.swt.SWT.error(SWT.java:3547)
> at org.eclipse.swt.SWT.error(SWT.java:3481)
> at org.eclipse.swt.SWT.error(SWT.java:3452)
> ...



Wie bekomme ich nun so einen AWT Button in meinen SWT View ?

bye Saxony


----------



## Wildcard (30. Jan 2008)

Das Composite muss vom Style SWT.EMBEDDED sein.


```
Composite viewComposite = new Composite(parent, SWT.EMBEDDED);

Panel panel = new Panel(new GridLayout(1, 1));
Frame frame = SWT_AWT.new_Frame(viewComposite);
```


----------



## Saxony (31. Jan 2008)

Hiho,

ich mal wieder. 

Also ich habe nun mal noch etwas probiert.


```
package myfirstrcp;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Panel;

import javax.swing.JButton;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;

public class SecondView extends ViewPart {

	public static final String ID = "myfirstrcp.views.secondview";

	public SecondView() {
		// TODO Auto-generated constructor stub
		this.setTitleImage(PlatformUI.getWorkbench().getSharedImages()
				.getImage(ISharedImages.IMG_OBJ_FOLDER));
	}

	@Override
	public void createPartControl(Composite parent) {

		Display display = PlatformUI.getWorkbench().getDisplay();

		Shell shell = new Shell(display);
		shell.setText("SWT und AWT");

		Composite comp = new Composite(shell, SWT.EMBEDDED);
		Panel pan = new Panel();
		pan.setLayout(new BorderLayout());
		JButton btn2 = new JButton("asd");
		pan.add(btn2, BorderLayout.CENTER);
		Frame frame = SWT_AWT.new_Frame(comp);
		frame.setLayout(new BorderLayout());
		frame.add(pan, BorderLayout.CENTER);

		GridLayout layout = new GridLayout();
		shell.setLayout(layout);
		shell.open();
	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub

	}

}
```

So naja nun kompiliert es ja schon mal fehlerfrei.  Aber einen Button mit der Aufschrift "asd" sehe ich in meinem View aber trotzdem nicht!?!

bye Saxony


----------



## Saxony (21. Feb 2008)

So ich hole den Thread nochmal hervor, da mein Problem nach wie vor besteht. 

Alle Beispiele die ich mir dazu angeschaut habe, gahen davon aus, dass ich mit neuem Display und neuer Shell arbeiten möchte.

Ich möchte aber ein JPanel in einen existierenden View anzeigen lassen. Vielleicht fange ich da ja auch schon falsch an!?!

bye Saxony


----------



## Wildcard (21. Feb 2008)

Ich verstehe nicht was die neue Shell da zu suchen hat. Du willst das doch in deiner View?


----------



## Saxony (21. Feb 2008)

Ja !! Nur wie ?


----------



## Wildcard (21. Feb 2008)

Die EMBEDDED Composite muss einfach ein Kind von 'parent' sein.
Eine neue Shell hat da nichts verloren  :wink:


----------



## Saxony (21. Feb 2008)

LOL - jo danke.

parent war das Zauberwort. 

Vielen Dank!

bye Saxony


----------

