Показать сообщение отдельно
Старый 18.12.2007, 03:28     # 1
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Простой апплет на Java

По сути в объекте должно быть несколько объектов-кругов, которые будут двигаться до стенки и отскакивать, каждый в своем потоке.

Проблема в том, что не знают как перерисовавыть их в апплете, как сделано - они перирисовыются только при изменинии размеров апплетов.

И еще хотел отлавлитвать событие о изменении размеров окна и обновлять предполагамые размеры для кругов, но тоже не пашет.

Можно сказать, что первая прога на яве, так что код далек от совершенства.

PHP код:
import java.awt.*;
import java.applet.*;

public class 
Circle extends Component implements Runnable{
    
Color color
    
int radiusposXposYvelocity;
    
Dimension dim;
    
Graphics gr;

    public 
Circle(int redint greenint blueint radiusint posXint posYint velocityDimension dimGraphics gr) {
        
this.color = new Color(redgreenblue);
        
this.radius radius;
        
this.posX posX;
        
this.posY posY;
        
this.velocity velocity;
        
this.dim dim;
        
this.gr gr;
    }

    public 
void move() {
        
posX posX velocity;
        if ((
velocity && posX radius >= dim.getWidth()) ||
            (
velocity && posX radius <= 0))
        {
            
velocity = -velocity;
        }
    }
    
    public 
void paint(Graphics g)
    {
        
g.setColor(color);
        
g.fillOval(posXposYradius*2radius*2);
    }
    
    public 
void run()
    {
        
Thread thisThread Thread.currentThread();
        
Graphics g getGraphics();
        while (
true) {
            
move();
            
repaint();
            
            try {
                
Thread.currentThread().sleep(100);
            } catch (
InterruptedException e) {}
        }
    }
    
    public 
void updateDim(Dimension dim)
    {
        
this.dim dim;
    }

PHP код:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class 
Race extends Applet implements KeyListener{
    
Circle []c;
    
Thread []t;
    
Dimension dim;    
    
int sizewidthheightradius;
    
    public 
void destroy() {
        
super.destroy();
    }

    public 
void init() {
        
size 10;
        
width 800;
        
height 600;
        
radius 10;
        
        
setSize(widthheight);
        
dim = new Dimension(widthheight);
        
        
= new Circle[size];
        
= new Thread[size];
        
        for(
int i 0sizei++ ){
            
c[i] = new Circle((int)(Math.random()*255), (int)(Math.random()*255), 
                (int)(
Math.random()*255), radius0, (height/size-radius)*(i+1), 20dimgetGraphics());
            
t[i] = new Thread(c[i]);
        }
        
        
addMouseListener(new MouseAdapter()
        {
            public 
void mousePressed(MouseEvent m_e)
            {
                for(
int i 0sizei++ ){
                    
c[i].updateDim(getSize());
                }
            }
        });
        
    }

    public 
void paint(Graphics g) {
        
super.paint(g);
        
g.drawString("kvarx"width 150height 5);
        
        for (
int i 0sizei++)
        {
            
c[i].paint(g);
        }
    }

    public 
void start() {
        for (
int i 0sizei++)
        {
            
t[i].start();
        }
    }
    
    public 
void stop() {
        
super.stop();
    }
    
    public 
void keyPressed(KeyEvent k_e)
    {
    
    }
    
    public 
void keyTyped(KeyEvent k_e)
    {
    
    }
    
    public 
void keyReleased(KeyEvent k_e)
    {
    
    }

Kvarx вне форума