Criar uma imagem que contenha várias imagens

12 respostas
F

Ola galera, será que daria para criar 1 imagem que contenha várias imagens em java dentro dela!? tipo acumular imagens!?

12 Respostas

I

Não entendi muito bem você quer que mostrar varias imagens no mesmo local tipo uma sobre a outra?

F

criar 1 BufferdImage ou Image que contenha várias imagens

I

E você iria utilizar para mostrar na sua tela?
Quem sabe um vetor ou um List possa te ajudar!

F

Eu conseguiria colocar BufferedImage ou Image dentro de um List ou Array, pois pensei numa opção melhor como o usuario vai poder formar uma frase com até 7 imagens, eu pensei em inicializar 7 BufferedImage ou Image e colocar cada Imagem dentro de um BufferedImage ou Image e pintá-lo, por exemplo:

Primeira Imagem clicada
Image imagem01 = createImage(90,90);

Segunda Imagem clicada
[code]
Imagem imagem02 = createImage(90,90);
[code]

até a sétima imagem, mas quando o programa iniciar ja existir essas sete áreas pré-definidas e se eu pudar colocar cada Image dentro de um Array ou Lista seria interessante pois após isso quando o usuario clicar numa imagem eu deletaria ela e se tivesse alguma imagem a direita da imagem deletada, essa imagem iria para a esquerda.....

I

Sim é possível se fazer com List, acho até mais fácil por exemplo:

List<Image> listaImagens = new ArrayList<Image>();
listaImagens.add(suaImagem1);
listaImagens.add(suaImagem2);
.
.
.
//removendo 1º imagem da lista
listaImagens.remove(0);

Flw!

F

Colocando as imagens em List resolveria meu problema de desaparecer as imagens na tela?! mas deu errado quando vou criar a List, fica sublinhado de vermelho, dá esse erro:

Exception in thread “main” java.lang.Error: Unresolved compilation problems:
The type List is not generic; it cannot be parameterized with arguments
listaImagens cannot be resolved
listaImagens cannot be resolved

flw,

F

Resolvi esse problema, o Eclipse estava importando java.awt.List, eu conseguiria desenhar a List pelo método g.drawImage()?! mesmo colocando o generics?!

I

Irá resolver mas isso quem define e você por exemplo você exclui o item da sua List mais você terá que mostrar isso na tela.
O exemplo que citei eu parametrizei minha List para aceitar somente tipo Image que deve ser importado e nesse caso ela só aceita tipo Image ou suas subclasse.

Que jeito você está desenhando na tela? E como você está pegando essas imagens?

F

então, é que eu criei um evento em que o usuario clica numa determinada imagem e essa imagem aparece na parte inferior da tela…, na primeira imagem aparece normalmente a partir da segunda em diante aparece somente a imagem que o usuario clicar e as outras desaparecem, gostaria de acumular as imagens, pois o intuito era fazer o usuario criar frases com as imagens…

de uma olhada no codigo:

package Codigo;

import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.util.List;
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};
	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;
	Image nome3 = createImage(pWidth,90);
	
	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);	
		Image nomes = null;
		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 {
					
					System.out.println("nome3: " + nome3);
					s = (String) imagens.id.get(i);
					System.out.println("s: "  + s);
					nome3 = imagens.getImage(s,i);
					List<Image> listaImagens = new ArrayList<Image>();
					listaImagens.add(nome3);
					aux[i] = xis;
					g.drawImage(nome3, xis,pHeight - 100 ,null);
					/*for(int z = 0; z < addIma.size(); z++) {
						g.drawImage(nome3[z],aux[z], pHeight-100, null);
					}*/
					xis = xis + 100;
					g.dispose();
					}
					
					catch(Exception e) {
						e.printStackTrace();
					}
			}
			
			
					
		}
		
	
		
	}
		
}
I

Você quer fazer uma galeria de imagens?

F

Não, a idéia seria formar uma frase com imagens que o usuário clicar…

F

Teria como colocar cada imagem de Graphics do evento dentro de um Container, JPanel, por exemplo posso ter até 7 imagens detectados pelo evento, cada imagem eu colocaria num Container, acredito que dessa forma não apagaria as outras imagens?!

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