[Resolvido] Problemas para desenhar linhas

2 respostas
C

Estou começando a estudar o nosso querido swing em Java. Neste início encontrei um pequeno problema:
Eu quero simplesmente desenhar duas linhas de forma que marque um X no meu painel. Essa linha deve mudar de tamanho se eu escalonar a janela, porém não chega à desenhá-las.
Alguém poderia me ajudar?

Lá vai o código:

import java.awt.Graphics;

import javax.swing.JPanel;

public class DrawPanel extends JPanel{

	private static final long serialVersionUID = -8201155976083004154L;

	public void paintContent(Graphics g){
		// Assegura que o painel vai ser exibido corretamente.
		super.paintComponents(g);
		
		// Pega altura e largura total.
		int width = getWidth();
		int height = getHeight();
		
		// Desenha uma linha do canto superior esquerdo até o inferior direito.
		g.drawLine(0, 0, width, height);
		
		// Desenha uma linha do canto inferior esquerdo até o final do superior direito.
		g.drawLine(0, height, width, 0);
	}

}
import javax.swing.JFrame;

public class mDrawPanelTest {

	public static void main(String[] args) {
		// Cria o painel que contém o desenho.
		DrawPanel dPanel = new DrawPanel();
		
		// Cria um novo quadro pra armazenar o painel.
		JFrame app = new JFrame();
		
		// Configura o quadro para ser encerrado quando ele for fechado.
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Adiciona o painel ao quadro.
		app.add(dPanel);
		
		// Configura o tamanho do quadro.
		app.setSize(250, 250);
		
		// Trona o quadro visível.
		app.setVisible(true);
	}

}

Desde já agradeço.

[]'s

2 Respostas

davidbuzatto

Nunca vai desenhar mesmo.
Seu código está errado.

O método que deve ser sobrescrito se chama paintComponent, não paintContent.
O método que deve ser chamado dentro da implementação, também é o paintComponent (da superclasse) e não paintComponents.
Enfim, na linha 9, troque paintContent por paintComponent e na linha 10, troque super.paintComponents(g) por super.paintComponent(g);.
Parece que é só esse o problema.

Se você tivesse usado a anotação @Override no método que você tentou sobrescrever, você ia ter um erro de compilação que ia te indicar melhor o que fazer.
Sempre que sobrescrever um método, anote-o com @Override.

[]'s

C

Ah cara, obg! Realmente era o problema. Obg novamente.
[]'s

Criado 13 de janeiro de 2012
Ultima resposta 14 de jan. de 2012
Respostas 2
Participantes 2