Strona 1 z 1

Problem z rzutowaniem

Napisane: piątek, 23 lipca 2010, 00:46
przez Piotr
Witam

Mój kod jest bardzo podobny do kodu, który powstał w lekcji 2 Java - Aspekty zaawansowane.

Code: Zaznacz cały

package animacja;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Main extends JFrame
{
    Main()
    {
        this.setTitle("Animacja");
        this.setBounds(300, 200, 250, 250);
        panelB.add(bStart);
        bStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                panelA.addKropla();
            }
        });
        this.getContentPane().add(panelB, BorderLayout.SOUTH);
        panelA.setBackground(Color.GRAY);
        this.getContentPane().add(panelA);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args)
    {
        new Main().setVisible(true);
    }
    private JPanel panelB = new JPanel();
    private Panel panelA = new Panel();
    private JButton bStart = new JButton("Start");
}

class Panel extends JPanel
{

    public void addKropla()
    {
        for (int i = 0; i < 10; i++)
        {
            Kropla kropelka = new Kropla();
            kropelka.move(1, 1);
            this.paint(this.getGraphics());
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException ex)
            {
                System.out.println(ex.getMessage());
            }
            System.out.println("X = " + kropelka.getX() + " Y = " + kropelka.getY());
        }
    }
    @Override
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(Kropla.getImg(), ??, ??, null);
    }
    int nowyx = 0;
    int nowyy = 0;
}
class Kropla
{
    public void move(int dx, int dy)
    {
        x += (rysunak.getWidth(null) * dx);
        y += (rysunak.getHeight(null) * dy);
    }
    public static Image getImg()
    {
        return Kropla.rysunak;
    }
    public int getX()
    {
        return x;
    }
    public int getY()
    {
        return y;
    }
    public void setX(int dx)
    {
        x = dx;
    }
    public void setY(int dy)
    {
        y = dy;
    }
    private static Image rysunak = new ImageIcon("kropelka.gif").getImage();
    private int x = 0;
    private int y = 0;
}
Dlaczego nie mogę rzutować klasy Kropla

Code: Zaznacz cały

 ((Kropla)kropelka).getX() 
w metodzie paintComponent klasy Panel?
Dlaczego nie mam dostępu do obiektu który został stworzony innej metodzie tego samego obiektu?
Proszę o rozjaśnienie tego zagadnienia.

Dziękuję za pomoc z góry:)
Pozdrawiam
Piotr

Re: Problem z rzutowaniem

Napisane: piątek, 23 lipca 2010, 10:45
przez Morfidon
Witam,

Zmienna kropelka została stworzona w pętli, czyli w zakresie "{ }", po "}", przestaje istnieć.

Pozdrawiam,

Arkadiusz

Re: Problem z rzutowaniem

Napisane: piątek, 23 lipca 2010, 12:52
przez Piotr
Dziękuję bardzo za wskazanie mi tak oczywistego niedopatrzenia z mojej strony

Przeniosłem deklarację zmiennej kropelka jako prywatna zmienna klasy Panel i działa jak sobie to wyobrażałem :D

Pozdrawiam
Piotr