Imagens somem após evento

12 respostas
F

Estou fazendo um programa que após clicar numa imagem ela aparecerá no canto inferior do programa, mas quando executo a segunda imagem em diante as imagens anteriores desaparecem e somente aparece a imagem que o usuario clicou, gostaria de manter essas imagens?!

to utilizando rendernização passiva…

flws,

12 Respostas

ViniGodoy

Minha bola de cristal está meio turva hoje, portanto, não consigo enxergar seu código fonte através dela…

Poderia posta-lo por favor?

F

Tá cheio de comentário o codigo, ok

package Codigo;

import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.util.ArrayList;

public class Janela1 extends JFrame {
	int pWidth, pHeight;
	CarregarImagens imagens;
	static int posX;
	static int posY;
	static int y1[] = {50,50,50,50,50,50,50,150,150,150,150,150,150,150,250,250,250,250,250,250,250};
	static Image nome3[] = new Image[21];
	PintarImagem pi;
	JPanel superior,inferior;
	String s;
	int xis = 50;
	int j = 0;
	int aux[] = new int[21];
	ArrayList addIma = new ArrayList();
	private Point[] points = new Point[10000];
	private int pointCount = 0;
	
	public Janela1(int x, int y, CarregarImagens ci) {
		
		pWidth =x;
		pHeight = y;
		imagens = ci;
	
		Container c = getContentPane();
		c.setLayout(null);
		
		setTitle("Escolha uma opção");
		setBackground(Color.white);
		setVisible(true);
		setSize(pWidth,pHeight);
		setResizable(true);
		
		
		superior = new PintarImagem(pWidth,pHeight,imagens);
		c.add(superior);
		superior.setBounds(10,10,pWidth,pHeight);
		superior.setBorder(BorderFactory.createLineBorder(Color.red,03));
		addMouseListener(new Tratador());
		//Aqui aonde estão as imagens que serão clicadas pelo mouse
	/*	
		JLabel rotulo1 = new JLabel("");
		rotulo1.setIcon(getImagem("00021.gif"));
		rotulo1.setBounds(50,pHeight-440,90,90);
		
		JLabel rotulo2 = new JLabel("");
		rotulo2.setIcon(getImagem("00031.gif"));
		rotulo2.setBounds(150,pHeight-440,90,90);
		
		JLabel rotulo3 = new JLabel("");
		rotulo3.setIcon(getImagem("00111.gif"));
		rotulo3.setBounds(620,pHeight-440,90,90);
		c.add(rotulo1);
		c.add(rotulo2);
		c.add(rotulo3);
		*/
		/*
		inferior = new EventImagem(pWidth,pHeight,imagens);
		c.add(inferior);
		inferior.setBounds(10,pHeight-200,pWidth,200);
		inferior.setBorder(BorderFactory.createLineBorder(Color.red,03));
		addMouseListener(new Tratador());
		//aqui aonde eu pintaria as imagens que foi clicado no JPanel superior
		*/
	}
/*	public ImageIcon getImagem(String nome){   
        String caminhoDaImagem = "/Imagens2/" + nome;   
        ClassLoader classLoader = this.getClass().getClassLoader();   
        ImageIcon icone = new ImageIcon(getClass().getResource(caminhoDaImagem)); 
        return icone;   
    }  */
	
	private class Tratador extends MouseAdapter {
		public void mousePressed(MouseEvent e) { 
			String s;// --ö)
			posX = e.getX();
			posY = e.getY();
			evento(posX,posY);
			points[pointCount] = e.getPoint();
			pointCount++;
			repaint();
		}
	}

	public static void evento(int x1,int x2) {
		posX = x1;
		posY = x2;
	}
	public void paint(Graphics g) {
		super.paint(g);	
		for(int i = 0; i<=20;i++) {
				if(((posX >= pi.x1[i])&&(posX <= pi.x1[i] + 90))&&
						((posY >= y1[i])&&(posY <= y1[i] + 90))) {
					try {
					Graphics2D g2d = (Graphics2D) g;	
					s = (String) imagens.id.get(i);
					System.out.println("s: "  + s);
					nome3[i] = imagens.getImage(s,i);
					addIma.add(nome3[i]);
					g2d.drawImage(nome3[i], xis,pHeight - 100 ,null);
					/*for(int z = 0; z < addIma.size(); z++) {
						g.drawImage(nome3[z],aux[z], pHeight-200, null);
					}*/
					xis = xis + 100;
					g2d.dispose();
					}
					
					catch(Exception e) {
						e.printStackTrace();
					}
				}
		}
		
	}
		
}
ViniGodoy

Não basta tirar fora o if da linha 99? Pq ele está pedindo para desenhar só imagens próximas ao clique do mouse…

F

sim, eu preciso desse if para pintar somente as imagens que o usuario clicar…é como se eu copiasse a imagem para baixo, pois o programa é para deficientes fisicos, que ajudariam eles a formar frases com imagens…

ViniGodoy

Não entendi.

Você inicialmente falou que as imagens somem, e que você gostaria de manter as imagens.

Aí na resposta você diz que:
“eu preciso desse if para pintar somente as imagens que o usuario clicar…”

Não tem como fazer as imagens sumirem e mante-las ao mesmo tempo.
O que exatamente você quer?

F

O que eu quero seria acumular imagens para o usuario formar a frase, mas com isso o usuario terá que clicar nas imagens e elas irao aparecer na parte debaixo da tela

F

deu para visualizar, quando o usuario clica numa imagem ela aparece e as outras somem…

F

não existe uma técnica para acumular imagens?!

F

tentei com o laço for de uma molhada dentro do método paint o algoritmo que está documentada…

F

não tem uma técnica como acumular num unico BufferedImage as imagens sei lá… :?:

F

ou teria como acumular imagens dentro de uma única variavel?!

F

ou criar um BufferedImage que desse para colocar umas 8 imagens?!

Criado 24 de março de 2012
Ultima resposta 25 de mar. de 2012
Respostas 12
Participantes 2