Platzieren von Komponenten in Swing Applet funktioniert nicht

Felipe

Mitglied
Hallo zusammen
Ich baue gerade ein kleines UFO Game in Form eines Swing-Applets. Ich bin auf das Problem gestoßen, dass ich im Center Bereich des Containers mehrere Komponenten platzieren möchte, die sollen sich dann auch noch bewegen. Weil man ja in so einen Bereich nur eine Komponente platzieren kann, wollte ich beide Komponenten (UFO und Plattform) auf ein JPanel hinzufügen, und dieses dann in den Center Bereich packen. Nur wird mir jetzt nichts mehr angezeigt. Zuvor, als ich nur eine Kompinente hatte und die direkt auf den Center Bereich gepackt hatte, funktionierte alles noch, inkl. Threads.
Ich hoffe jemand kann mir helfen 🙂

[Java]
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;

public class UFOTest extends JApplet implements Runnable {
public UFOTest(){}

private UFO ufo1;
private Plattform pf;
private JPanel pGame=new JPanel();
private Thread runner;
private int speed=1;
private Container c;

public void init() {
c=getContentPane();
c.setLayout(new BorderLayout());
ufo1=new UFO();
pf=new Plattform();
pGame.add(ufo1);
pGame.add(pf);
c.add(pGame,BorderLayout.CENTER);
setSize(1024, 768);
setLayout(null);
setVisible(true);
}

public void start() {
if(runner==null) {
runner=new Thread(this);
runner.start();
}
ufo1.setStart();
ufo1.setRightColor(11);
ufo1.setSpeed(speed);
}

public void stop(){
if(runner!=null)
runner=null;
}


public void run() {
Thread ich=Thread.currentThread();
while(ich==runner) {
ufo1.move();
if(ufo1.ufoGanzUnten()){
ufo1.setStart();
ufo1.setRightColor(11);
ufo1.setSpeed(++speed);
}
repaint();
try{
Thread.sleep(20);
}catch(InterruptedException e){}
}
}
}
[/Java]

[Java]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Plattform extends JPanel{

private final int height=15;
private final int defWidth=60;
private int width;
private int posX;
private final int defX=195; //wenn 60 Breit und wenn Spielfeld 450 Breit
private final int defY=440; // wenn Spielfeld 500 hoch (North=50, South=50)

public Plattform() {} //default Konstruktor

public void bewege(boolean i) {
if (!i)
posX=posX-5;
else if(i)
posX=posX+5;
}

public void setStart() {

posX=defX;
width=defWidth;
}

public void alterPlatform(boolean kleiner) {
if(kleiner)
width=width-10;
else if(kleiner==false)
width=width+10;
}

public int getX() {
return posX;
}

public void keyPressed(KeyEvent eP) {
if(eP.getKeyCode()==KeyEvent.VK_LEFT)
bewege(false);
else if(eP.getKeyCode()==KeyEvent.VK_RIGHT)
bewege(true);
}

public void paintComponent(Graphics g) {
g.setColor(Color.black);
g.fillRect(defX, defY, defWidth, height);
}
}
[/Java]

[Java]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class UFO extends JPanel {

public UFO(){}

private int speed;
private final Color colDef=Color.GREEN;
private Color colUFO;
private final int height=20;
private final int width=50;
private int x;
private int y;
private Color[] ufoFarben={Color.RED,Color.BLUE,Color.GREEN,
Color.YELLOW,Color.WHITE,Color.BLACK,
Color.MAGENTA,Color.PINK,Color.CYAN,
Color.GRAY,Color.ORANGE,Color.LIGHT_GRAY};

public void setColor(Color c) {
colUFO=c;
}

public void setRightColor(int level) {
int randomColor=(int)(Math.random()*(level+1));
colUFO=ufoFarben[randomColor];
}


public void setSpeed(int level) {
speed=level+1;
}

public int getXPos(){
return x;
}

public int getYPos(){
return y;
}

public void paintComponent(Graphics g) {
g.setColor(colUFO);
g.fillOval(x,y,width,height);
}

public void setStart(){
x=(int)(Math.random()*500+1);
y=0;
}

public void move() {
y=y+speed;
}

public boolean ufoGanzUnten() {
if(y>=400)
return true;
return false;
}

}
[/Java]
 
Zuletzt bearbeitet:
a) Man kann in einem Container mehrere Objekte bündeln
b) Ich kann dir aufgrund des vorliegenden Codes nicht sagen, warum es nicht funktioniert, dazu fehlen die Klassen UFO und Plattform 🙂

Gruß eMmiE
 
Das Erste was mir jetzt einfiele wäre, dass vllt. bei den JPanel Klassen das setVisible() fehlt.
Gibt er dir irgendwelche Exceptions aus?

Prüfe mal nach, inwiefern die Variablen der Objekte UFO und Plattform vorhanden sind
 

Neue Themen


Zurück
Oben