Dúvida...JComponent

6 respostas
D

Boa tarde a todos,

estou fazendo um trabalho ,utlizando JComponent, que tenho que desenhar gráficos.

O.B.S - Eu prefiro utilizar JFreeChart, alé de ser mto mais bonito, é mto mais simples…porém foi especificado no trabalho a utilização apenas de component.

minha dúvida é o seguinte qdo eu utilizo o método

protected void paintComponent(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

g2.setColor(Color.BLUE);
g2.fillRect(x, y, largura, tamanho);

}

A variavel tamanho é para dimensionar o desenho na tela meu problema é que ao aumentar o tamanho da variavel o grafico na tela aumenta para cima e para baixo…
eu preciso que, ao aumentar o tamanho da variave, o grafico aumente apenas para cima.

Alguém pode me ajudar?

Att,
Bona

6 Respostas

ViniGodoy

Você realmente entende o que são os parâmetros que você está passando?

Uma dica, x e y são as coordenadas do topo esquerdo do seu gráfico (esquerda em x, e do topo em y).
largura e tamanho (que deveria se chamar altura) são as dimensões que seu gráfico vai crescer para a direita e para baixo.

O sistema de coordenadas tem como coordenada mínima (0,0) o canto superior esquerdo da área de desenho. Portanto, para fazer o gráfico subir, você precisará subtrair o tamanho da coordenada y.

Dá uma lida nos posts de Java 2D do meu site, que vai te ajudar um bocado. Mas a dica é sempre entender o que você está fazendo, antes de partir para a tentativa e erro. Se ainda tiver dificuldade, tente fazer os desenhos num papel milimetrado e de lá deduzir as formulas.

D

Vini,

Primeiramente obrigado por responder tão rapidamente.

Alterando a coordenada y eu redireciono o gráfico na tela…

lenvando-se em consideração a sua colocação.

coordenada(50,100)

o gráfico irá aparecer em um determinado lugar, diminuindi o valor y o gráfico irá ser gerado um pouco acima.

Ainda não é isso que eu preciso…

No meu entendimento, a coordenada y deve ser mantida para que os gráficos fiquem alinhados, a coordenada x varia a medida que eu adiciono gráficos.

Então, dada uma coordenada y eu quero que meu gráfico seja sempre gerado pra cima, não para cima e para baixo

acho que a SS que eu adicionei explica melhor…

Muito obrigado novamente.


ViniGodoy

Se y continuar igual, o topo da sua barra sempre estará no mesmo lugar. Por isso aumentar a altura fará ela crescer para baixo.

Você precisa que o y da base seja igual. Para isso acontecer, vc tem que subtrair a altura da coordenada y do topo, de modo que a base sempre se manterá na mesma coordenada.

Veja:
coordenada y da base = y do topo + altura

Portanto:
y do topo = coordenada y da base - altura

D

Hmmm, entendi o que você explicou porém, não consigo visualizar isto no código…

O que acontece é o seguinte…

vamos supor que eu precise criar uma reta(basenado-se no JAVA, não no plano cartesiano, rss)

para fazer a reta eu preciso de duas coordenadas Ex. (10,50) e (10,10);

Mas no fillRect eu passo apenas um x e um y.

vc tem algum exemplo ai?

Algo que possa clariar minha mente que está ficando desorientada…

obrigado

ViniGodoy

Use o método abaixo.

public void createBar(Graphics2d g, int x, int basey, int width, int height) { int topy = basey - height; g.fillRect(x, basey, width, height); }

Agora é só espeficar a coordenada y da base, não do topo.

D

nossa, tão simples…

agora entendi…mto obrigado viu!

Criado 25 de março de 2010
Ultima resposta 25 de mar. de 2010
Respostas 6
Participantes 2