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;
}
Code: Zaznacz cały
((Kropla)kropelka).getX()
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