Imprimir na tela uma Matriz usando o Swing. [Resolvido]

Bom, pessoal. Esse é o meu primeiro post aqui e eu tenho uma dúvida bem básica, eu acho.

Eu estudo Java há algum tempo e sempre pensei em como eu poderia fazer isso no Java, tenho mais experiência com C…

Indo ao assunto:

Eu quero imprimir uma matriz em uma janela. Não sei como fazer isso, nem quero o código. Quero apenas uma idéia do que eu posso usar para fazer isso, para eu poder estudar.

Eu consigo imprimir ela no console, já sei usar algumas ferramentas do Swing.

=D

Abraços.

Meu código atual:

import java.util.Random;


public class Matriz {
	
	public static void main(String args[]) {
		
		Random random = new Random();
		
		int matriz[][] = new int[5][7];
		
		for(int i = 0; i < 5; i++) {
			for(int j = 0; j < 7; j++) {
				matriz[i][j] = 1 + random.nextInt(100);
				
				System.out.printf("%4d", matriz[i][j]);
			}
			System.out.println("\n");
		}		
	}
}

Aprenda desenhar em um JPanel em:

http://www.pontov.com.br/site/index.php/java/48-java2d/93-uma-visao-rapida-sobre-o-java-2d

Mas voce pode usar o drawString para desenhar palavras.

Valeu, vou ler o link! Eu tenho algo sobre Java 2D no meu livro do Deitel.

Valeu pelas dicas, vou ler a respeito.

Só uma coisa, o drawString é do AWT ou do Swing? Eu preciso invocar uma instancia de Graphics?

=======================================

Editando:

Eu olhei o drawString e ele aparece no objeto de Graphics, quanto ao link que você postou. Eu dei uma lida e até consegui resolver outro exercício que eu estava fazendo.


import java.awt.Graphics;

import javax.swing.JPanel;

public class Desenho extends JPanel {
	
	public void paintComponent(Graphics g) {
		
		int width = getWidth();
		int height = getHeight();
        int temp = height;
		
		
		for(int i = 0; i <= width; i += 16, temp -= 16) {
			g.drawLine(0, i, i, height);
			g.drawLine(0, temp, i, 0);
			g.drawLine(width, i, temp, height);
			g.drawLine(width, temp, temp, 0);
		}
	}
}
import javax.swing.JFrame;


public class DesenhoTest {
	
	public static void main(String[] args) {
		
		Desenho desenho = new Desenho();
		
		JFrame frame = new JFrame();
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		frame.add(desenho);
		frame.setSize(250, 250);
		frame.setVisible(true);
	}
}

Eu fiz aqui, mas não está certo, pois na hora de imprimir na tela, só aparece um borrão, alguém sabe dizer por quê?

Eu testei com o System.out.print e deu certo, imprimiu um na frente do outro, mas nesse ai eu acho que está imprimindo um em cima do outro, não sei.


import java.awt.Graphics;
import java.util.Random;

import javax.swing.JPanel;


public class Matriz extends JPanel {
	
		public void paintComponent(Graphics g) {
		
		Random random = new Random();
		
		int matriz[][] = new int[5][7];
		
		for(int i = 0, b = 0; i < 5; i++, b += 20) {
			for(int j = 0, a = 0; j < 7; j++, a += 16) {
				matriz[i][j] = 1 + random.nextInt(100);
				
				String texto = "\t" + Integer.toString(matriz[i][j]);
				
				g.drawString(texto, a, b);
				
			}
		}
	}
}

Consegui resolver o problema, o esquema é fazer os campos do drawString variar, daí eu coloquei uma variável em cada for pra poder alternar os campos do drawString. Porque eles são coordenadas, parecido com o drawLine();

Abraços.