Problemas com implementação gráfica e eventos de mouse

Olá Companheiros,

Mais uma vez, e talvez outras vezes, irei recorrer ajuda de vc´s, consegui resolver o problema da referência na posição do mouse, porém como estou resolvendo os problemas por etapas vamos lá:

1- estou selecionando as figuras a serem inseridas na area de trabalho atraves de um painel contendo botoes. Ao selecionar um desses botoes, faco com que no evento de click desse botao um objeto do tipo Image receba a figura (do tipo “gif”) contida em uma area definida por um caminho ou path.
E posteriormente insiro com o click do mouse (evento do mesmo) a figura com a seguinte linha

public void MousePressed (MouseEvent e) {
int x = e.getX();
int y = e.getY();

Graphics g = getGraphics();
/* img = contem a imagem ao selecionar em um dos buttons no painel de controle /
g.drawImage(img, x, y, null);
/
a lista a seguir e uma sequencia de imagens que foram inseridas na area de trabalho - de modo que para uma nova pintura da area as imagens possam ser buscadas nessa lista */
listaImagens.adicionar(img, x, y);
g.dispose();
}

Em torno desse pequeno modulo pergunto ? Por que quando seleciono uma figura do painel, a 1a vez para qualquer objeto selecionado, quando dou um click no mouse para apresentar a imagem, ela está lá e não visivel, somente a partir do 2 click em diante é que as figuras aparecem ?Como eu poderia resolver esse problema ?

2 - A area de trabalho do meu aplicativo herda de um JScroolPanel implementando a classe MouseListener se nao me falha memoria. Em torno disto, faço outra pergunta : quando insiro os objetos (as figuras) nessa area de trabalho e redimensiono essa área, a barra de scrool não fica ativada e os objetos que estão inseridos nessa área escondidos somente poderão ser revistos se eu ampliar novamente a janela. Como resolver isso, dá impressão que as figuras não estão inseridas na área de trabalho (ela parece não “enxergar” isso).

3 - Algum de vc´s conhece um componente ou como eu poderia implementar o zoom in e o zoom out para a area de trabalho ?.

De inicio e só, peço desculpas se são muitas perguntas, porém se alguem tiver uma solução ou identificar qual o problema, gostaria de uma ajuda.

Desde ja agradeço

André

opa andre, seja bem vindo,

para receber os valores X e Y relativos ao objeto que gerou o MouseEvent, voce deve utilizar os metodos MouseEvent.getX() e MouseEvent.getY().

se voce ja esta utilizando esses metodos, o problema deve ser que voce esta conectando o seu MouseListener com o container errado, pode enviar um pouco do seu codigo para analise?
isso poderia gerar a chamada no teu MouseListener, pintar a tela, e depois a chamada num objeto que esta contido nesse container, o que limparia novamente (ou faria alguma outra coisa) com esse espaco.

abraco

guilherme

Ola André, o que o Guilherme falou me parece correto, tente tambem ao invez de usar o evento click do mouse usar o evento mousePressed, já tive um problema semelhante e isto resolveu.
Um abraço.

Olá Guilherme e Daniel
Agradeço as boas vindas e a respostas de vc´s.

Tentarei fazer essa adaptação e posteriormente retornarei para vc´s o resultado, com certeza estarei perturbando vc´s um pouquinho, pois estou fazendo um trabalho voltado para a universidade cuja linguagem adotada será Java onde a minha experiência ainda é pouca.

mais uma vez obrigado,
AT+

Andre

[quote=“andre”]Companheiros,

Estou buscando resolver um problema: Estou tentando criar um aplicativo gráfico em Java com as seguintes caracteristicas: Um Container principal e nesse container adiciono outros três containers (um para conter a barra de ferramentas horizontal, uma para vertical e um para a area de trabalho (onde adicionarei meus elementos do desenho) que é um painel de barra de rolagem. O meu problema consiste em:

1- o evento click do mouse parece não retornar a posição em relação ao container da área de trabalho de modo que tenho de fazer uma adaptação para resolver o problema, como fazer essa posição tomar como referência ao container apenas de desenho ?

2 - Ainda nos eventos do mouse e também de redesenhar (ao movimentar as imagens ou redimensionar a janela do aplicativo) preciso novamente ver os desenhos, porém, uso uma estrutura de dados para armazená-los e depois recuperá-los dentro do evento de redimensionar a janela, porém, observo que ele redesenha, mas logo em seguida ele é apagado. Pelo que me parece tanto quanto os eventos do mouse quanto ao desenho das imagens a referencia nao é o container da area de trabalho e sim ao container principal que contém os outros containers. Se isso e verdade, preciso achar uma solução para resolver este problema.

Se alguem tiver uma solução ou identificar qual o problema, gostaria de uma ajuda.

Desde ja agradeço

André[/quote]

sinta-se em casa… ou quase la