ich hab folgendes applet geschrieben, indem ein see gemalt wird und in diesem see blasen aufsteigen. see ist gemalt, blase auch. die steigen jetzt nur leider viel zu schnell auf. ich habe versucht eine einfach for schleife einzubauen, die lässt jedoch alles neu malen, nich nur die blasen, was dazu führt, dass das programm nur länger lädt. hier der quell code:
ich hoffe ihr könnt mir helfen. ich benötige eine schleife die die blasen langsam und ansehbar aufsteigen lässt.
danke im vorraus.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
public class LakeNyos1 extends JFrame
{
public LakeNyos1()
{
super("LAKE NYOS");
setTitle("Lake Nyos");
setSize(1000,1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MapPane LakeNyos1 = new MapPane();
Container content = getContentPane();
content.add(LakeNyos1);
setVisible(true);
}
public static void main(String[] arguments)
{
LakeNyos1 frame = new LakeNyos1();
}
}
class MapPane extends JPanel
{
public void See(Graphics comp)
{
Graphics2D comp2D = (Graphics2D)comp;
comp2D.setColor(Color.white);
Rectangle2D.Float background = new Rectangle2D.Float(
0F, 0F, (float)getSize().width, (float)getSize().height);
comp2D.fill(background);
// den see zeichnen
comp2D.setColor(Color.black);
GeneralPath fl = new GeneralPath();
fl.moveTo(0F,300F);
fl.lineTo(10F,300F);
fl.lineTo(15F,290F);
fl.lineTo(18F,290F);
fl.lineTo(23F,280F);
fl.lineTo(26F,275F);
fl.lineTo(50F,275F);
fl.lineTo(50F,275F);
fl.lineTo(100F,273F);
fl.lineTo(150F,270F);
fl.lineTo(200F,275F);
fl.lineTo(210F,315F);
fl.lineTo(215F,315F); //Beginn des Sees
fl.lineTo(225F,350F);
fl.lineTo(235F,400F);
fl.lineTo(250F,430F);
fl.lineTo(270F,440F);
fl.lineTo(320F,450F);
fl.lineTo(380F,460F);
fl.lineTo(440F,460F);
fl.lineTo(500F,450F);
fl.lineTo(550F,440F);
fl.lineTo(570F,410F);
fl.lineTo(585F,380F);
fl.lineTo(595F,350F);
fl.lineTo(605F,315F); //Ende des Sees
fl.lineTo(630F,310F);
fl.lineTo(700F,305F);
fl.lineTo(750F,315F);
fl.lineTo(850F,315F);
fl.lineTo(920F,305F);
fl.lineTo(1000F,295F);
fl.lineTo(1000F,295F);
fl.lineTo(920F,305F);
fl.lineTo(850F,315F);
fl.lineTo(750F,315F);
fl.lineTo(700F,305F);
fl.lineTo(630F,310F);
fl.lineTo(605F,315F);
fl.lineTo(595F,350F);
fl.lineTo(585F,380F);
fl.lineTo(570F,410F);
fl.lineTo(550F,440F);
fl.lineTo(500F,450F);
fl.lineTo(440F,460F);
fl.lineTo(380F,460F);
fl.lineTo(320F,450F);
fl.lineTo(270F,440F);
fl.lineTo(250F,430F);
fl.lineTo(235F,400F);
fl.lineTo(225F,350F);
fl.lineTo(215F,315F);
fl.lineTo(210F,315F);
fl.lineTo(200F,275F);
fl.lineTo(150F,270F);
fl.lineTo(100F,273F);
fl.lineTo(26F,275F);
fl.lineTo(23F,280F);
fl.lineTo(18F,290F);
fl.lineTo(15F,290F);
fl.moveTo(0F,300F);
fl.lineTo(10f,300F);
fl.closePath();
comp2D.draw(fl);
}
public void fuelleSee(Graphics comp)
{
Graphics2D comp2D = (Graphics2D)comp;
// See mit Wasser füllen
comp2D.setColor(Color.blue);
GeneralPath sl = new GeneralPath();
sl.moveTo(215F,320F);
sl.lineTo(225F,350F);
sl.lineTo(235F,400F);
sl.lineTo(250F,430F);
sl.lineTo(270F,440F);
sl.lineTo(320F,450F);
sl.lineTo(380F,460F);
sl.lineTo(440F,460F);
sl.lineTo(500F,450F);
sl.lineTo(550F,440F);
sl.lineTo(570F,410F);
sl.lineTo(585F,380F);
sl.lineTo(595F,350F);
sl.lineTo(605F,320F);
comp2D.fill(sl);
}
public void blasen(Graphics comp)
{
int y = 450;
while ( y>320)
{
for (int i = 0; i <100000; i++);
y = y- 1;
Graphics2D comp2D = (Graphics2D)comp;
// CO2 Blasen zeichnen
comp2D.setColor(Color.white);
BasicStroke pen2 = new BasicStroke();
comp2D.setStroke(pen2);
Ellipse2D.Float e1 = new Ellipse2D.Float(380,y,4,4);
comp2D.fill(e1);
}
}
public void menschen(Graphics comp)
{
Graphics2D comp2D = (Graphics2D)comp;
comp2D.setColor(Color.black);
GeneralPath ss = new GeneralPath();
ss.moveTo(25F,275F);
ss.lineTo(31F,265F);
ss.lineTo(37F,275F);
ss.lineTo(31F,265F);
ss.lineTo(31F,255F);
ss.lineTo(25F,250F);
ss.lineTo(31F,255F);
ss.lineTo(37F,250F);
ss.lineTo(31F,255F);
ss.lineTo(31F,265F);
ss.lineTo(25F,275F);
ss.closePath();
comp2D.draw(ss);
BasicStroke pen2 = new BasicStroke();
comp2D.setStroke(pen2);
Ellipse2D.Float em = new Ellipse2D.Float(27,246,8,8);
comp2D.fill(em);
}
public void paintComponent(Graphics comp)
{
See(comp);
fuelleSee(comp);
blasen(comp);
menschen(comp);
}
}
ich hoffe ihr könnt mir helfen. ich benötige eine schleife die die blasen langsam und ansehbar aufsteigen lässt.
danke im vorraus.