Menu Jframe

7 respostas
arthurmmedeiros

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???

7 Respostas

arthurmmedeiros

help

ViniGodoy

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.

Marcio_Lima

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);
                   }
                }
arthurmmedeiros

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 =/

ViniGodoy

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.

arthurmmedeiros

outro grande problema!!!
nao consigo gerar um ponto usando coordenadas decimais!!! estou tentando colocar um double, mas o “fillrect” só aceita int =/

ViniGodoy

Use os objetos da classe Rectangle2D:

Retangle2D rect = new Rectangle2D.Double(x, y, w, h); g2d.fill(rect);

Criado 6 de novembro de 2011
Ultima resposta 6 de nov. de 2011
Respostas 7
Participantes 3