JPanel nao carrega drawLine

0 respostas
sk2ck

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?

Criado 10 de abril de 2011
Respostas 0
Participantes 1