O método drawLine() da classe Graphics nos permite desenhar linhas retas. Observe atentamente a assinatura deste método:
public abstract void drawLine(int x1,
int y1, int x2, int y2)
Neste método, os parâmetros x1 e x2 representam as coordenadas iniciais da linha e x2 e y2 representam as coordenadas finais. Veja um trecho de código no qual desenhamos quatro linhas em um JLabel:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Estudos extends JFrame{
JLabel label;
public Estudos() {
super("Desenhando em um JLabel");
Container c = getContentPane();
c.setLayout(new BorderLayout());
// Cria um JLabel
label = new JLabel();
c.add(label, BorderLayout.CENTER);
// Cria um botão
JButton btn = new
JButton("Desenhar Linhas");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Graphics graphics = label.getGraphics();
// desenha linhas no JLabel
graphics.drawLine(10, 15, 100, 10);
graphics.drawLine(20, 30, 80, 150);
graphics.drawLine(50, 50, 120, 30);
graphics.drawLine(100, 100, 310, 100);
}
}
);
// Adiciona o botão à janela
c.add(btn, BorderLayout.SOUTH);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Há algo de interessante neste código. Se você maximizar, minimizar ou redimensionar a janela verá que o desenho é apagado. Isso acontece porque todas as vezes que a janela sofre alguma alteração, ela é pintada novamente, juntamente com seus componentes filhos. Se você deseja que o desenho seja feito automaticamente novamente, é melhor fazer uma sub-classe do componente desejado e sobrescrever seu método paintComponent(). Nesta mesma seção você encontrará exemplos de como fazer isso.
|