SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite

Ahuga

Aktives Mitglied
Hallo zusammen

In meinem Tabb erscheinen zwei rote Flächen (siehe Anhang) und ich habe keine Ahnung, wie die dahin kommen.

Der Code sieht folgendermassen aus:
Java:
// Main Panel
Composite compositeMain = new Composite(parent, SWT.NONE);
GridLayout layoutMain = new GridLayout(2, false);
layoutMain.horizontalSpacing = HORIZONTAL_SPACING;
compositeMain.setLayout(layoutMain);
compositeMain.setBackground(WHITE);
compositeMain.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false));
		
		
// InnerMainPanelLeft
Composite compositeInnerMainPanelLeft = new Composite(compositeMain, SWT.NONE);
GridLayout layoutMainRight = new GridLayout(1, false);
layoutMainRight.verticalSpacing = VERTICAL_SPACING;
compositeInnerMainPanelLeft. setLayout(layoutMainRight);
compositeInnerMainPanelLeft.setBackground(WHITE);

// Feeder
FeederComposite feederComposite = new FeederComposite(compositeInnerMainPanelLeft, SWT.NONE);			
feederComposite.setBackground(RED);
		

// Machine
MachineComposite machinePage = new MachineComposite(compositeInnerMainPanelLeft, SWT.NONE);
machinePage.setBackground(RED);
...

Das Feeder- und das Maschinen-Composite sind identisch:

Java:
public MachineComposite(Composite parent, int style) {
             super (parent, style);
	Group groupMachine = new Group(parent, SWT.NONE); 
	groupMachine.setText("Machine");
	Font font = new Font(null, "Arial",10, SWT.BOLD);
	groupMachine.setFont(font);
	groupMachine.setBackground(WHITE);
	groupMachine.setLayout(new GridLayout(1, false));
	groupMachine.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false));
	Composite compositeInnerGroupMachine = new Composite(groupMachine, SWT.NONE);
	compositeInnerGroupMachine.setLayout(new GridLayout(2, false));
		
		
	Label labelMachineType = new Label(compositeInnerGroupMachine, SWT.NONE);
	labelMachineType.setText("Type");
	labelMachineType.setLayoutData(new GridData(LABEL_WIDTH, SWT.DEFAULT));
             ...

Woher kommen diese roten Flächen?

Vielen Dank für Tipps.
 
Ich vermute MachineComposite ist selbst ein Composite? Dann muss das so aussehen:
Java:
Group groupMachine = new Group(this, SWT.NONE);
Sonst erzeugst du das MachineComposite auf dem Parent und in MachineComposite erzeugst du groupMachine ebenfalls auf dem Parent von MachineComposite
 
Danke für Deine Info.

Ja, MachineCompoiste vererbt von Composite.

Gemäss Deinem Tipp habe ich den Code geändert:
Java:
public MachineComposite(Composite parent, int style) {
	super (parent, style);

	Group groupMachine = new Group(this, SWT.NONE); 
        ...

Nun sind die roten Flächen noch vorhanden, jedoch die Eingabemasken verschwunden.
 
Das wars, genial, super.

Vielen Dank, bin Dir unendlich dankbar.

Ich habe noch eine kleine Anschlussfrage: Wie erreiche ich, dass die Gruppe die ganze Fläche ausfüllt, also der rote Rand nicht mehr sichtbar ist?
 
Setze die Werte von marginWidth und marginHeight in deinen GridLayouts in den ensprechenden Gruppen auf 0, dann sollten die Ränder fort sein.
Nur: Wieso erzeugst du überhaupt die roten Flächen, wenn du sie sofort wieder verdecken willst?
 

Zurück
Oben