# Panel in SWT einfügen



## mavinatic (1. Sep 2011)

Hallo Community,

ich würde gerne ein JPanel/Panel in ein SWT Fenster einfügen. Den Code den ich benutze ist folgender: 


```
Composite comp = new Composite(shell.getShell(),SWT.EMBEDDED);
		comp.setSize(200, 200);
		Frame frame = SWT_AWT.new_Frame(comp);
		Panel panel = new Panel();
		panel.setBackground(Color.RED);
		frame.add(panel);
```

Ich sehe eine kleines Stück roten Hintergrund, welcher jedoch kleiner ist als 200x200....die größe ist ca. 20x20....mit setPreferredSize(); bei frame,panel und comp ändert sich nichts, was mache ich falsch?

Gruß


----------



## Gast2 (1. Sep 2011)

Denk mal du bruachst dafür eien SWT/AWT Bridge

Eclipse Corner Article: Swing/SWT Integration

EclipseZone - Integrating Swing into Eclipse RCPs ...


----------



## mavinatic (2. Sep 2011)

Ich hab alles so gemacht wies da steht, jedoch ändert sich die größe nicht :/


----------



## Gast2 (2. Sep 2011)

mavinatic hat gesagt.:


> Ich hab alles so gemacht wies da steht, jedoch ändert sich die größe nicht :/



Mhm mach mal ein ausführbares Beispiel


----------



## mavinatic (2. Sep 2011)

Hier mein Code:

```
package org.app.gui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;

import javax.swing.JPanel;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import com.hexapixel.widgets.generic.ImageCache;
import com.hexapixel.widgets.ribbon.RibbonButton;
import com.hexapixel.widgets.ribbon.RibbonGroup;
import com.hexapixel.widgets.ribbon.RibbonShell;
import com.hexapixel.widgets.ribbon.RibbonTab;
import com.hexapixel.widgets.ribbon.RibbonTabFolder;
import com.hexapixel.widgets.ribbon.RibbonTooltip;

public class MainFrame {
	private BigButtonListener listener = null;
	private RibbonShell shell = null;
	private Display display = null;
	
	public MainFrame()
	{
		display = new Display();
		shell = new RibbonShell(display);
		shell.setText("My wonderful GUI");
		
		listener = new BigButtonListener(shell);
		
		initBigButtonMenu();
		initTabs();
		
		Composite comp = new Composite(shell.getShell(),SWT.EMBEDDED | SWT.NO_BACKGROUND);		
		
		Frame frame = SWT_AWT.new_Frame(comp);
		Panel panel = new Panel();
		panel.setBackground(Color.RED);
		
		frame.add(panel);
		
		shell.open();
		while(!shell.isDisposed())
		{
			if(!display.readAndDispatch())
			{
				display.sleep();
			}
		}
		display.dispose();
	}
	
	private void initBigButtonMenu()
	{
		shell.addBigButtonListener(listener);
		shell.setBigButtonTooltip(new RibbonTooltip("MyBigButton", "MyBigButton"));
		Menu bigButtonMenu = shell.getBigButtonMenu();
		MenuItem menu = new MenuItem(bigButtonMenu,RibbonButton.STYLE_NO_DEPRESS);
		menu.addSelectionListener(listener);
	}
	
	private void initTabs()
	{
		RibbonTabFolder folder = shell.getRibbonTabFolder();
		/* EMail-Tab */
		RibbonTab emailTab = new RibbonTab(folder, "EMail");
			RibbonGroup recieveGroup = new RibbonGroup(emailTab, "Empfangen");
				RibbonButton getMailButton = new RibbonButton(recieveGroup,ImageCache.getImage("img/pic.PNG"),"Abrufen",RibbonButton.STYLE_NO_DEPRESS);
			RibbonGroup sendGroup = new RibbonGroup(emailTab, "Versenden");
				RibbonButton sendButton = new RibbonButton(sendGroup, null, "Neue Email",RibbonButton.STYLE_NO_DEPRESS);
				RibbonButton redirectButton = new RibbonButton(sendGroup, null, "Weiterleiten", RibbonButton.STYLE_NO_DEPRESS);
				RibbonButton answerButton = new RibbonButton(sendGroup, null, "Antworten", RibbonButton.STYLE_NO_DEPRESS);
				RibbonButton answerAllButton = new RibbonButton(sendGroup, null, "Allen antworten", RibbonButton.STYLE_NO_DEPRESS);
			RibbonGroup searchGroup = new RibbonGroup(emailTab, "Suchen");
				RibbonButton startSearch = new RibbonButton(searchGroup, null, "Suchen", RibbonButton.STYLE_NO_DEPRESS);
		/* RSS-Tab */
		RibbonTab rssTab = new RibbonTab(folder, "RSS-Feed");
		/* Task-Tab */
	}
	
	public static void main(String[] args)
	{
		new MainFrame();
	}
}
```

Mein GUI


----------



## Gast2 (2. Sep 2011)

Ich versuchs nachher mal aber deine shell hat kein LayoutManager oder?


----------



## mavinatic (2. Sep 2011)

So weit ich weiß nein!


----------



## Gast2 (3. Sep 2011)

mavinatic hat gesagt.:


> So weit ich weiß nein!



Und warum nicht schon mal versucht =)? Mehr Tips kann ich ja gar nicht mehr geben 


```
package rcptest;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;

import javax.swing.JLabel;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
 
public class MainFrame {
    private Shell shell = null;
    private Display display = null;
    
    public MainFrame()
    {
        display = new Display();
        shell = new Shell(display);
        shell.setLayout(new FillLayout());
        
        Composite comp = new Composite(shell.getShell(),SWT.EMBEDDED | SWT.NO_BACKGROUND);      
        
        Frame frame = SWT_AWT.new_Frame(comp);
        Panel panel = new Panel();
        panel.add(new JLabel("Test"));
        panel.setBackground(Color.RED);
        
        frame.add(panel);
        
        shell.open();
        while(!shell.isDisposed())
        {
            if(!display.readAndDispatch())
            {
                display.sleep();
            }
        }
        display.dispose();
    }
    
    public static void main(String[] args)
    {
        new MainFrame();
    }
}
```


----------



## mavinatic (5. Sep 2011)

Ja aber wenn ich das so mache, habe ich ja grade den Effekt auch mit FillLayout!


----------



## Gast2 (5. Sep 2011)

mavinatic hat gesagt.:


> Ja aber wenn ich das so mache, habe ich ja grade den Effekt auch mit FillLayout!



Welchen Effekt den? Du hast ein rotes Panel... Wenn es eine bestimmte Größe haben solltest du die Layoumanager mal anschauen damit hängts zusammen...

ich denke du musst die größe des composite setzen und nicht die vom panel...


----------



## mavinatic (5. Sep 2011)

Ich hab beides probiert....Comp...setSize(); und Panel Size geändert ich habe ein 20x20pixel großes rechteck oben in der ecke^^


Ich möchte noch hinzufügen, dass ich mit dem Ribbon Framework arbeite, das sollte ich hier an dieser Stelle mal erwähnen, ich weiß es ist etwas spät, aber...besser als nie, vllt bringt es uns weiter! 

SWT Ribbon | Hexapixel


----------



## Gast2 (6. Sep 2011)

mavinatic hat gesagt.:


> Ich möchte noch hinzufügen, dass ich mit dem Ribbon Framework arbeite, das sollte ich hier an dieser Stelle mal erwähnen, ich weiß es ist etwas spät, aber...besser als nie, vllt bringt es uns weiter!
> 
> SWT Ribbon | Hexapixel



Daran liegts wohl weil mit meinem Beispiel geht das ohne Probleme...


----------



## mavinatic (6. Sep 2011)

Gibt es irgendwelche Informationen, gerade wenn es in Java um RibbonFrames geht, gibts nicht viele Informationen!...


----------

