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");
}
}
}
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();