Pessoal tenho duas classes:
uma é essa:
package grafica;
/*
* Exemplo de Animacao usando o paint(Graphics) e um Thread.
* Feito para o JavaFree por Carlos Heuberger 2005-08-26.
*
* Cria uma tela vazia, clique em duas posicoes distintas
* para ver a animacao de uma linha unindo os dois pontos.
* Cada novo clique ira produzir uma nova linha.
*/
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class Raio extends Component implements Runnable {
/*public static void main(String[] args) {
JFrame frame = new JFrame("Raio");
Raio x = new Raio(new Point(0,0), new Point(50,50));
frame.getContentPane().add(x);
x.setPoint(new Point(50,50), new Point(150,150));
//x.setPoint(p);
//frame.getContentPane().add(new Raio());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 300);
frame.validate();
frame.setLocationByPlatform(true);
frame.setVisible(true);
} */
private Point from = null;
private Point to = null;
private float t = 0;
public Raio(Point p1, Point p2) {
/*addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
setPoint(e.getPoint());
}
});*/
setPoint(p1, p2);
Thread thread = new Thread(this);
thread.setDaemon(true);
thread.setName("Raio");
thread.start();
}
public void setPoint(Point p1, Point p2) {
from = p1;
to = p2;
t = 0;
repaint();
}
// implements Runnable
public void run() {
while (true) {
try {
Thread.sleep(0);
} catch (InterruptedException e) {
break;
}
if (t < 1) {
t += 0.05;
repaint();
}
}
}
public void paint(Graphics g) {
super.paint(g);
if (from != null && to != null) {
int x = Math.round((to.x - from.x) * t + from.x);
int y = Math.round((to.y - from.y) * t + from.y);
g.setColor(Color.BLUE);
g.drawLine(from.x, from.y, x, y);
}
}
}
vejam que o parte do main esta comentada!
Em outra classe, executo o segundo comando:
Raio x = new Raio(new Point(0,0), new Point(50,50));
JPanel grafico = new JPanel(new BorderLayout());
grafico.add(x, BorderLayout.NORTH);
Meu problema é o seguinte: Quando eu executo a classe Raio com o Main, o linha é desenhada normalmente (logico o Main estará descomentado). No entanto quando eu comento o main, e executo o codigo acima no JPanel grafico aparece somente 1 ponto, e não a linha.
Gostaria que aparece a linha… alguém sabe onde estou errando?