Collinwood
Mitglied
Hallo Leute, ich steh hierbei total im Wald :suspekt:
Hoffe, ihr blickt durch und könnt mir helfen.
Ich habe da in einer Klasse meine Attribute
und ich komme dann in einer meiner Methoden an den Punkt wo ich die o.g. Liste/Container mit meinen "Beings" darin an das Composite übergeben möchte:
Ausgabe dessen lautet (z.B.):
Größe der Liste beingContainer im LifeController: 42
Liste wurde übergeben...
Der Code im Composite sieht folgendermaßen aus:
... und als Ausgabe bekomme ich zu diesem Objekt zu meinem Erstaunen immer nur:
Größe der Liste beingContainer im SimulationComposite: 0
Liste leer
Mal abgesehen von diesem größeren Fehler, wird zwar der Else-Zweig in der paintControl-Methode durchlaufen, aber den gewünschten String "Simulation ist unterbrochen..." hab ich auch noch nie gesehen!! Wer mir also sagen kann wo es da noch hängt, bitte gerne.
Edit: Hierzu hab ich die Lösung gefunden:
statt
war die Lösung.
Dankeschön vorab,
Collinwood
Hoffe, ihr blickt durch und könnt mir helfen.
Ich habe da in einer Klasse meine Attribute
Java:
private BeingContainer beingContainer; // beerbt eine ArrayList<Being> //Being = andere, eigene Klasse
private SimulationComposite simulationComposite; //ist ein SWT-Composite
Java:
System.out.println("Größe der Liste beingContainer in dieser Klasse: "+this.beingContainer.size());
this.simulationComposite.setBeingList(this.beingContainer);
System.out.println("Liste wurde übergeben...");
Größe der Liste beingContainer im LifeController: 42
Liste wurde übergeben...
Der Code im Composite sieht folgendermaßen aus:
Java:
package view;
import java.util.ArrayList;
import model.Being;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
/**
* @author Tobias Keiler
* @date 09.12.2010
*/
public class SimulationComposite extends Composite {
/**
* @Description
*/
private ArrayList<Being> beingList;
/**
* @param parent
* @param style
*/
public SimulationComposite(Composite parent, int style) {
super(parent, style);
this.beingList = new ArrayList<Being>();
initialize();
}
/**
*
*/
private void initialize() {
setSize(new Point(800, 470));
setLayout(null);
this.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent arg0) {
//FIXME syso
System.out.println("Größe der Liste beingContainer im SimulationComposite: "+SimulationComposite.this.beingList.size());
if (!SimulationComposite.this.getBeingList().isEmpty()) {
//FIXME syso
System.out.println("Liste voll");
for (Being being : SimulationComposite.this.getBeingList()) {
// Rectangle rect =
// SimulationComposite.this.getClientArea();
arg0.gc.drawOval(being.getPosition().getX(), being
.getPosition().getY(), 1, 1);
}
} else {
//FIXME syso
System.out.println("Liste leer");
arg0.gc
.drawString("Simulation ist unterbrochen...",
SimulationComposite.this.getDisplay()
.getBounds().width / 2,
SimulationComposite.this.getDisplay()
.getBounds().height / 2);
}
}
});
}
/**
* @Description //TODO Describe this one!
* @param beingList
*/
public void setBeingList(ArrayList<Being> beingList) {
this.beingList = beingList;
}
/**
* @Description //TODO Describe this one!
* @return //TODO
*/
public ArrayList<Being> getBeingList() {
return this.beingList;
}
}
// @jve:decl-index=0:visual-constraint="10,10"
... und als Ausgabe bekomme ich zu diesem Objekt zu meinem Erstaunen immer nur:
Größe der Liste beingContainer im SimulationComposite: 0
Liste leer
Mal abgesehen von diesem größeren Fehler, wird zwar der Else-Zweig in der paintControl-Methode durchlaufen, aber den gewünschten String "Simulation ist unterbrochen..." hab ich auch noch nie gesehen!! Wer mir also sagen kann wo es da noch hängt, bitte gerne.
Edit: Hierzu hab ich die Lösung gefunden:
Java:
SimulationComposite.this.getBounds().width / 2
Java:
SimulationComposite.this.getDisplay().getBounds().width / 2
Dankeschön vorab,
Collinwood
Zuletzt bearbeitet: