Boa Tarde,
Sou iniciante em JAVA e estou com uma grande dúvida em um trabalho meu.
Bom, o trabalho consiste em gerar um grafo a partir de arquivos com os pontos(arquivos de texto com as coordenadas dos pontos).
eu tenho a coordenada de cada ponto, então preciso gerar um plano cartesiano e mandar ler cada ponto e imprimir.
Eu tive a ideia de criar uma Jframe, e nela eu tenho uma lista com os arquivos de cada grafo. Minha intenção é o usuário escolher um dos arquivos e aí o grafo gerado seria impresso na própria Jframe.
Preciso fazer assim, pois após gerar esse grafo, eu vou mandar heurísticas sobre ele, pra encontrar o melhor caminho. É o problema do caixeiro viajante.
Eu ja tenho muita coisa pronta, mas só a parte lógica do trabalho. Eu gero a matriz de adjacência, consigo rodar as heurísticas que preciso. Meu grande problema está em Imprimir esse Grafo.
Como eu disse, eu criei uma Jframe, e preciso em um canto dessa tela, imprimir um grafo. Penso que seria possível criar nesse canto de tela que estou falando, uma nova janela com um plano cartesiano eu que eu possa desenhar. Mas não sei como criar isso. Alguém por favor pode me ajudar???
Oi.
Se tem pressa na solução de uma dúvida, comece abrindo-a no fórum certo. Essa dúvida pertencia ao fórum de interface gráfica (já movi o tópico para o local certo).
Também tente dar um título descritivo. Sua dúvida, aparentemente, sequer fala de um menu. O título correto seria “Desenhar grafo no JFrame”.
Por fim, para desenhar o grafo, use o Java 2D, ou uma API pronta, como a prefuse.
Analise o exemplo:
import java.awt.Graphics;
import java.awt.Graphics2D;
. . .
public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// - - - - -
// - - - obter o conjunto de pontos
// - - - - -
for (int ix=0; ix < qtdPontos; ix += 4) {
int x_1 = conjuntoPontos[ix];
int y_1 = conjuntoPontos[ix + 1];
int x_2 = conjuntoPontos[ix + 2];
int y_2 = conjuntoPontos[ix + 3];
g2d.drawLine(x_1, y_1, x_2, y_2);
}
}
Estou criando um Canvas dentro de uma Jframe
e aí eu mando criar os pontos por um “fillrect”
está certo isso???
como eu faço pra escolher aonde esse canvas vai aparecer???
O canvas é aberto quando um botão é pressionado, aí ele aparece na Jframe mesmo, mas so consigo imprimir ele no canto superior esquerdo da tela.
Ta complicado isso, rsrsrsrs
eu só preciso imprimir os pontos e as retas, nada mais do que isso =/
Você deve criar uma classe filha de JComponent, e estender seu método paintComponent.
Você posiciona esse componente como faria com qualquer componente de tela.
Ele se ajustará ao layout manager desejado. Só certifique-se de retornar as dimensões corretas que você deseja para ele no método getPreferredSize().
No paintComponent, você coloca seu código de pintura.
outro grande problema!!!
nao consigo gerar um ponto usando coordenadas decimais!!! estou tentando colocar um double, mas o “fillrect” só aceita int =/
Use os objetos da classe Rectangle2D:
Retangle2D rect = new Rectangle2D.Double(x, y, w, h);
g2d.fill(rect);