imagem dentro de um Jpanel
Como faco pro JPanel carregar uma imagem?
Posso colocar um JPanel sobre o outro, para sobrepor imagens?
Consegui coloar uma imagem no JDesktopPane, mas naum consigo sobrepor labels nem textfield.
O q eu quero eh: carregar varias imagens, sobrepor algumas sobre um fundo e entre elas inserir labels e textfields.
Como se fosse uma pagina como a do Javafree, com fundo e area para inserir informacoes.
Ateh
Karen-tiemi
Curtidas 0
Respostas
Perenha
09/04/2009
Olá,
Bom, vou te mandar um exemplo simples para carregar um imagem e labels...
Com isso vc pode criar quantos labels e imagens quiser e adicionando em outros JPanels ou no próprio container do JFrame. Ai é só brincar com o BorderLayout...
Espero ter ajudado...
Abraço.
Rodrigo Perenha.
import java.awt.*;
import javax.swing.*;
public class Teste {
public static void main(String args[]) {
//janela do programa
JFrame frame = new JFrame("Carregar Imagem");
//container onde serão adicionados todos componentes
Container container = frame.getContentPane();
//carrega a imagem passando o nome da mesma
ImageIcon img = new ImageIcon("lena.jpg");
//pega a altura e largura
int altura = img.getIconHeight();
int largura = img.getIconWidth();
//adiciona a imagem em um label
JLabel label = new JLabel(img);
//adiciona a altura e largura em outro label
JLabel label2 = new JLabel("Altura: "+altura+" Largura: "+largura);
//cria o JPanel para adicionar os labels
JPanel panel = new JPanel();
panel.add(label, BorderLayout.NORTH);
panel.add(label2, BorderLayout.SOUTH);
//adiciona o panel no container
container.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
//pronto e simples
}
}
GOSTEI 0
Karen-tiemi
09/04/2009
Muito obrigada, Rodrigo!
Vou testar.
:)
GOSTEI 0
Kolger
09/04/2009
Aproveitando a dúvida alheia, testei o código, funcionou 100%, valeu :D
Só um pequeno comentário aqui.. Não sei se fiz algo de errado, mas a imagem só apareceu realmente quando eu coloquei o caminho relativo dela na pasta do projeto.. Se eu simplesmente adicionasse a imagem ao projeto e botasse o nome em
a imagem não aparecia..
Tive que botar assim:
//carrega a imagem passando o nome da mesma
ImageIcon img = new ImageIcon("lena.jpg");//carrega a imagem passando o nome da mesma
ImageIcon img = new ImageIcon("..\\nomeDoProjeto\\res\\nomeDaImg.jpg");GOSTEI 0
Carlos Heuberger
09/04/2009
isso depende de como voce montou o projeto e como a IDE trabalha com imagens. Em sí não é um problema direto do Java, mas sim de como o seu programa está sendo gerado.
O ImageIcon com um String contendo um caminho relativo (sem / no inicio) procura a partir do diretório atual, ou seja, aquele onde o programa está sendo executado (System.getProperty("user.dir")).
No eclipse normalmente é o diretório do projeto.
O último exemplo tambem deveria funcionar assim:
[]]
new ImageIcon("res/nomeDaImg.jpg");GOSTEI 0
Sidplay
09/04/2009
Pessoal eu vou usar esse tópico pra tirar minha dúvida ok? Eu estou tentando adicionar uma imagem no panel mas não está dando certo. Eu coloquei esse código dentro do construtor do panel.
E no construtor do ContentPane eu coloquei assim:
Mas aí sumiu o panel SUL que eu deixei com um nome que antes aparecia. E a imagem no panel CENTRO também não aparece. O que eu fiz de errado?
A estrutura está assim: dentro de um panel tem dois panels: um norte e um no centro. No norte eu deixei um texto com o nome do sistema e no centro eu quero deixar a figura.
private JPanel getJPanelCentro() {
if (jPanelCentro == null) {
jPanelCentro = new JPanel();
jPanelCentro.setLayout(null);
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");//adicionei essa linha
JLabel labelImg = new JLabel(img);//adicionei essa linha
jPanel.add(labelImg, BorderLayout.CENTER); //adicionei essa linha
}
return jPanelCentro;
}private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.CENTER);
jContentPane.add(jPanelCentro, BorderLayout.CENTER); //eu adicionei essa linha
}
return jContentPane;
}GOSTEI 0
Ricardo Staroski
09/04/2009
Creio que o correto seria assim:
private JPanel getJPanelCentro() {
if (jPanelCentro == null) {
jPanelCentro = new JPanel();
jPanelCentro.setLayout(new BorderLayout()); // Layout não deve ser null
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");
JLabel labelImg = new JLabel(img);
jPanelCentro.add(labelImg, BorderLayout.CENTER); // adicionar imagem no CENTRO do JPANELCENTRO e não no jpanel...
}
return jPanelCentro;
}
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Sidplay"]Pessoal eu vou usar esse tópico pra tirar minha dúvida ok? Eu estou tentando adicionar uma imagem no panel mas não está dando certo. Eu coloquei esse código dentro do construtor do panel.
E no construtor do ContentPane eu coloquei assim:
Mas aí sumiu o panel SUL que eu deixei com um nome que antes aparecia. E a imagem no panel CENTRO também não aparece. O que eu fiz de errado?
A estrutura está assim: dentro de um panel tem dois panels: um norte e um no centro. No norte eu deixei um texto com o nome do sistema e no centro eu quero deixar a figura.
Antes de mais nada, esses métodos não são o que normalmente é chamado de Construtor. Construtor é o método que tem o mesmo nome que a classe e não tem retorno definido, usado pelo "new".
Não encontrei onde tem o panel SUL que voce mencionou, mas acho que o erro é no método getJContentPane. Voce está adicionando dois componentes como CENTER, só vai ficar o último; e voce não está chamando o método getJPanelCentro() que é responsável em criar o componente.
private JPanel getJPanelCentro() {
if (jPanelCentro == null) {
jPanelCentro = new JPanel();
jPanelCentro.setLayout(null);
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");//adicionei essa linha
JLabel labelImg = new JLabel(img);//adicionei essa linha
jPanel.add(labelImg, BorderLayout.CENTER); //adicionei essa linha
}
return jPanelCentro;
}private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.CENTER);
jContentPane.add(jPanelCentro, BorderLayout.CENTER); //eu adicionei essa linha
}
return jContentPane;
}private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.SUL); // mudei essa linha, assumindo que é o SUL que mencionou
jContentPane.add(getJPanelCentro(), BorderLayout.CENTER); // mudei essa linha
}
return jContentPane;
}GOSTEI 0
Sidplay
09/04/2009
[quote="staroski"]Creio que o correto seria assim:
Já corrigi esse erro do panel centro, foi falta de atenção mesmo hehehe. Valeu.
private JPanel getJPanelCentro() {
if (jPanelCentro == null) {
jPanelCentro = new JPanel();
jPanelCentro.setLayout(new BorderLayout()); // Layout não deve ser null
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");
JLabel labelImg = new JLabel(img);
jPanelCentro.add(labelImg, BorderLayout.CENTER); // adicionar imagem no CENTRO do JPANELCENTRO e não no jpanel...
}
return jPanelCentro;
}
GOSTEI 0
Sidplay
09/04/2009
[quote="simu"]
Não encontrei onde tem o panel SUL que voce mencionou, mas acho que o erro é no método getJContentPane. Voce está adicionando dois componentes como CENTER, só vai ficar o último; e voce não está chamando o método getJPanelCentro() que é responsável em criar o componente.
[]]
Em me enganei, é um panel NORTE que eu coloquei um label com um texto e no CENTRO que eu quero colocar a imagem. Eu fiz o que o staroski falou pra corrigir e no bloco de código do contentPane eu coloquei do jeito que você falou mas ainda deu erro. Agora que eu estou entendendo melhor aqui, nessa linha:
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.SUL); // mudei essa linha, assumindo que é o SUL que mencionou
jContentPane.add(getJPanelCentro(), BorderLayout.CENTER); // mudei essa linha
}
return jContentPane;
}jContentPane.add(getJPanel(), BorderLayout.CENTER);
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(new BorderLayout());
jPanel.setBackground(Color.white);
jPanel.add(getJPanelNorte(), BorderLayout.NORTH);
jPanel.add(getJPanelCentro(), BorderLayout.CENTER);
}
return jPanel;
}GOSTEI 0
Sidplay
09/04/2009
E aí alguém pode me dar uma luz? A imagem não aparece mesmo no panel.
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Sidplay"]E aí alguém pode me dar uma luz? A imagem não aparece mesmo no panel.
Tá muito confuso isso... não tem como simplificar um pouco...
pelo menos só vendo uns métodos espalhados fica difícil analisar.
Se estiver usando um Layout no getJPanelCentro(), como o [b]staroski[/b] sugeriu, então outro problema pode ser que a imagem não está sendo encontrada.
[]]
GOSTEI 0
Sidplay
09/04/2009
[quote="simu"][quote="Sidplay"]E aí alguém pode me dar uma luz? A imagem não aparece mesmo no panel.
Tá muito confuso isso... não tem como simplificar um pouco...
pelo menos só vendo uns métodos espalhados fica difícil analisar.
Se estiver usando um Layout no getJPanelCentro(), como o [b]staroski[/b] sugeriu, então outro problema pode ser que a imagem não está sendo encontrada.
[]] package principal;
import fornecedor.CadastroFornecedor;
import funcionario.CadastroFuncionario;
import historico.CadastroHistorico;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import cliente.CadastroCliente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import lancamento.CadastroLancamento;
import javax.swing.ImageIcon;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.SystemColor;
public class Menu extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanel = null;
private JMenuBar jJMenuBar = null;
private JMenu jMenuClientes = null;
private JMenuItem jMenuItemCadastrarClientes = null;
private JMenuItem jMenuItemHistorico = null;
private JMenu jMenuFornecedores = null;
private JMenuItem jMenuItemCadastroFornecedores = null;
private JMenu jMenuFuncionarios = null;
private JMenuItem jMenuItemCadastroFuncionarios = null;
private JMenu jMenuLancamentos = null;
private JMenuItem jMenuItemCadastroLancamentos = null;
private JMenu jMenuSair = null;
private JMenuItem jMenuItemSair = null;
private JPanel jPanelNorte = null;
private JPanel jPanelCentro = null;
private JLabel jLabelCRC = null;
/**
* This is the default constructor
*/
public Menu() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(636, 359);
this.setJMenuBar(getJJMenuBar());
this.setContentPane(getJContentPane());
this.setTitle("Controle de Recebimento de Contas - Stelzer Consultoria");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(new BorderLayout());
jPanel.setBackground(Color.white);
jPanel.add(getJPanelNorte(), BorderLayout.NORTH);
jPanel.add(getJPanelCentro(), BorderLayout.CENTER);
}
return jPanel;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.setPreferredSize(new Dimension(20, 20));
jJMenuBar.add(getJMenuClientes());
jJMenuBar.add(getJMenuFornecedores());
jJMenuBar.add(getJMenuFuncionarios());
jJMenuBar.add(getJMenuLancamentos());
jJMenuBar.add(getJMenuSair());
}
return jJMenuBar;
}
/**
* This method initializes jMenuClientes
*
* @return javax.swing.JMenu
*/
private JMenu getJMenuClientes() {
if (jMenuClientes == null) {
jMenuClientes = new JMenu();
jMenuClientes.setText("Clientes");
jMenuClientes.setMnemonic(KeyEvent.VK_C);
jMenuClientes.add(getJMenuItemCadastrarClientes());
jMenuClientes.addSeparator();
jMenuClientes.add(getJMenuItemHistorico());
}
return jMenuClientes;
}
/**
* This method initializes jMenuItemCadastrarClientes
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemCadastrarClientes() {
if (jMenuItemCadastrarClientes == null) {
jMenuItemCadastrarClientes = new JMenuItem();
jMenuItemCadastrarClientes.setText("Cadastrar Clientes");
jMenuItemCadastrarClientes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroCliente cc = new CadastroCliente();
cc.setVisible(true);
}
});
}
return jMenuItemCadastrarClientes;
}
/**
* This method initializes jMenuItemHistorico
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemHistorico() {
if (jMenuItemHistorico == null) {
jMenuItemHistorico = new JMenuItem();
jMenuItemHistorico.setText("Histórico de Clientes");
jMenuItemHistorico.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroHistorico ch = new CadastroHistorico();
ch.setVisible(true);
}
});
}
return jMenuItemHistorico;
}
/**
* This method initializes jMenuFornecedores
*
* @return javax.swing.JMenu
*/
private JMenu getJMenuFornecedores() {
if (jMenuFornecedores == null) {
jMenuFornecedores = new JMenu();
jMenuFornecedores.setText("Fornecedores");
jMenuFornecedores.setMnemonic(KeyEvent.VK_F);
jMenuFornecedores.add(getJMenuItemCadastroFornecedores());
}
return jMenuFornecedores;
}
/**
* This method initializes jMenuItemCadastroFornecedores
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemCadastroFornecedores() {
if (jMenuItemCadastroFornecedores == null) {
jMenuItemCadastroFornecedores = new JMenuItem();
jMenuItemCadastroFornecedores.setText("Cadastrar Fornecedores");
jMenuItemCadastroFornecedores.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroFornecedor cf = new CadastroFornecedor();
cf.setVisible(true);
}
});
}
return jMenuItemCadastroFornecedores;
}
/**
* This method initializes jMenuFuncionarios
*
* @return javax.swing.JMenu
*/
private JMenu getJMenuFuncionarios() {
if (jMenuFuncionarios == null) {
jMenuFuncionarios = new JMenu();
jMenuFuncionarios.setText("Funcionários");
jMenuFuncionarios.setMnemonic(KeyEvent.VK_F);
jMenuFuncionarios.add(getJMenuItemCadastroFuncionarios());
}
return jMenuFuncionarios;
}
/**
* This method initializes jMenuItemCadastroFuncionarios
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemCadastroFuncionarios() {
if (jMenuItemCadastroFuncionarios == null) {
jMenuItemCadastroFuncionarios = new JMenuItem();
jMenuItemCadastroFuncionarios.setText("Cadastrar Funcionários");
jMenuItemCadastroFuncionarios.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroFuncionario cfu = new CadastroFuncionario();
cfu.setVisible(true);
}
});
}
return jMenuItemCadastroFuncionarios;
}
/**
* This method initializes jMenuLancamentos
*
* @return javax.swing.JMenu
*/
private JMenu getJMenuLancamentos() {
if (jMenuLancamentos == null) {
jMenuLancamentos = new JMenu();
jMenuLancamentos.setText("Lançamentos");
jMenuLancamentos.setMnemonic(KeyEvent.VK_L);
jMenuLancamentos.add(getJMenuItemCadastroLancamentos());
}
return jMenuLancamentos;
}
/**
* This method initializes jMenuItemCadastroLancamentos
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemCadastroLancamentos() {
if (jMenuItemCadastroLancamentos == null) {
jMenuItemCadastroLancamentos = new JMenuItem();
jMenuItemCadastroLancamentos.setText("Cadastrar Lançamentos");
jMenuItemCadastroLancamentos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CadastroLancamento cl = new CadastroLancamento();
cl.setVisible(true);
}
});
}
return jMenuItemCadastroLancamentos;
}
/**
* This method initializes jMenuSair
*
* @return javax.swing.JMenu
*/
private JMenu getJMenuSair() {
if (jMenuSair == null) {
jMenuSair = new JMenu();
jMenuSair.setText("Sair");
jMenuSair.setMnemonic(KeyEvent.VK_S);
jMenuSair.add(getJMenuItemSair());
}
return jMenuSair;
}
/**
* This method initializes jMenuItemSair
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getJMenuItemSair() {
if (jMenuItemSair == null) {
jMenuItemSair = new JMenuItem();
jMenuItemSair.setText("Sair do Sistema");
jMenuItemSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
return jMenuItemSair;
}
/**
* This method initializes jPanelNorte
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelNorte() {
if (jPanelNorte == null) {
jLabelCRC = new JLabel();
jLabelCRC.setText("CONTROLE DE RECEBIMENTO DE CONTAS - CRC");
jLabelCRC.setFont(new Font("Arial", Font.BOLD + Font.PLAIN, 20));
jLabelCRC.setBounds(new Rectangle(62, 19, 488, 16));
jPanelNorte = new JPanel();
jPanelNorte.setLayout(null);
jPanelNorte.setPreferredSize(new Dimension(50, 50));
jPanelNorte.add(jLabelCRC, null);
jPanelNorte.setBorder(BorderFactory.createLineBorder(SystemColor.controlDkShadow, 1));
}
return jPanelNorte;
}
/**
* This method initializes jPanelCentro
*
* @return javax.swing.JPanel
*/
private JPanel getJPanelCentro() {
if (jPanelCentro == null) {
jPanelCentro = new JPanel();
jPanelCentro.setLayout(new BorderLayout());
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");
JLabel labelImg = new JLabel(img);
jPanelCentro.add(labelImg, BorderLayout.CENTER);
}
return jPanelCentro;
}
}
GOSTEI 0
Carlos Heuberger
09/04/2009
aqui funciona perfeitamente.
Tem certeza que a imagem está nesse diretório?
Um diretório "Imagem" PARALELO ao diretório da execução? o do projeto no Eclipse?
Só para testar, inclui os println abaixo:
se o getIconWidth for -1 é sinal que a imagem não foi carregada.
O 2° println deve mostrar qual o caminho completo da imagem.
[]]
...
ImageIcon img = new ImageIcon("./Imagem/logo.jpg");
System.out.println(img.getIconWidth());
try {
System.out.println(new File("../Imagem/logo.jpg").getCanonicalPath());
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel labelImg = new JLabel(img);
...GOSTEI 0
Sidplay
09/04/2009
[quote="simu"]aqui funciona perfeitamente.
Tem certeza que a imagem está nesse diretório?
Um diretório "Imagem" PARALELO ao diretório da execução? o do projeto no Eclipse?
Só para testar, inclui os println abaixo:
se o getIconWidth for -1 é sinal que a imagem não foi carregada.
O 2° println deve mostrar qual o caminho completo da imagem.
[]]
simu, imprimiu o -1 e no segundo print imprimiu o endereço correto da imagem. Ae eu coloquei esse endereço correto e ainda não mostra a imagem.
O diretório Imagem não é paralelo ao diretório do projeto do Eclipse não. Fica numa pasta qualquer. O endereço mostrado eu coloquei assim, mas com barras duplas pois deixar com uma só dá erro.
[b]D:\\Unifil\\4º ano\\TCC\\CRC\\Imagem\\logo.jpg[/b]
...
ImageIcon img = new ImageIcon("./Imagem/logo.jpg");
System.out.println(img.getIconWidth());
try {
System.out.println(new File("../Imagem/logo.jpg").getCanonicalPath());
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel labelImg = new JLabel(img);
...GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Sidplay"][quote="simu"]aqui funciona perfeitamente.
Tem certeza que a imagem está nesse diretório?
Um diretório "Imagem" PARALELO ao diretório da execução? o do projeto no Eclipse?
Só para testar, inclui os println abaixo:
se o getIconWidth for -1 é sinal que a imagem não foi carregada.
O 2° println deve mostrar qual o caminho completo da imagem.
[]]
simu, imprimiu o -1 e no segundo print imprimiu o endereço correto da imagem. Ae eu coloquei esse endereço correto e ainda não mostra a imagem.
O diretório Imagem não é paralelo ao diretório do projeto do Eclipse não. Fica numa pasta qualquer. O endereço mostrado eu coloquei assim, mas com barras duplas pois deixar com uma só dá erro.
[b]D:\\Unifil\\4º ano\\TCC\\CRC\\Imagem\\logo.jpg[/b] ...
ImageIcon img = new ImageIcon("./Imagem/logo.jpg");
System.out.println(img.getIconWidth());
try {
System.out.println(new File("../Imagem/logo.jpg").getCanonicalPath());
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel labelImg = new JLabel(img);
......
ImageIcon img = new ImageIcon("../Imagem/logo.jpg");
......
String dir = "D:\\develop\\ECLIPSE\\Forums\\Imagem\\logo.jpg";
ImageIcon img = new ImageIcon(dir);
System.out.println(img.getIconWidth());
try {
File file = new File(dir);
System.out.println(file.getCanonicalPath());
System.out.println("exists: " + file.exists());
System.out.println("file: " + file.isFile());
System.out.println("read: " + file.canRead());
} catch (IOException ex) {
ex.printStackTrace();
}
...GOSTEI 0
Sidplay
09/04/2009
simu, deu certo agora. Pelo jeito não estava encontrando a imagem pois agora eu coloquei no c:\ e encontrou de primeira. Com o seu novo código tinha imprimido tudo false aí eu resolvi colocar no c: e deu certo. Então com certeza não estava encontrando a imagem.
Valeu mais uma vez pela ajuda.
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Sidplay"]simu, deu certo agora. Pelo jeito não estava encontrando a imagem pois agora eu coloquei no c:\ e encontrou de primeira. Com o seu novo código tinha imprimido tudo false aí eu resolvi colocar no c: e deu certo. Então com certeza não estava encontrando a imagem.
Valeu mais uma vez pela ajuda.
outra coisa que achei perigoso é o nome do diretório "4° ano"... não sei se o windows/Java não causa problemas com o '°'
[]]
GOSTEI 0
Sidplay
09/04/2009
[quote="simu"][quote="Sidplay"]simu, deu certo agora. Pelo jeito não estava encontrando a imagem pois agora eu coloquei no c:\ e encontrou de primeira. Com o seu novo código tinha imprimido tudo false aí eu resolvi colocar no c: e deu certo. Então com certeza não estava encontrando a imagem.
Valeu mais uma vez pela ajuda.
outra coisa que achei perigoso é o nome do diretório "4° ano"... não sei se o windows/Java não causa problemas com o '°'
[]] GOSTEI 0
Arthur Davi
09/04/2009
Galera eu gostaria de criar uma label que ficasse trocando de imagen
nele mesmo( tipo slide) ja capturei com new ImageIcon mas
Só que ele entra dentro do if mas so executa o 1º porque?
ai passa primeira imagen que eu forcei,entra segundo if e set imagem depois para.
public foto3() {
initComponents();
//System.out.println();
//carregaando vetor..forcei indice para fazer teste
vetfotos[1] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Picture1.png"); // aqui tem a tua imagem original
vetfotos[2] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Inverno.jpg"); // aqui tem a tua imagem original
vetfotos[3] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Picture3.png"); // aqui tem a tua imagem original
int largura=1200; //Largura da Imagem
int altura=650; //Altura da Imagem
//configurando tamanho imagens
vetfotos[1].setImage( vetfotos[1].getImage().getScaledInstance(largura, altura, 100));
vetfotos[2].setImage(vetfotos[2].getImage().getScaledInstance(largura, altura, 100));
vetfotos[3].setImage(vetfotos[3].getImage().getScaledInstance(largura, altura, 100));
//------------------- carregou as imagens-----------------
//timer de imagen vai trocar a cada 2 segundos
int numberOfMillisecondsInTheFuture = 2000; // 3 sec
Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
jLabel1.setIcon(vetfotos[1]);//força a abri com uma imagen
if(vetfotos[1].equals(vetfotos[1]))
{
jLabel1.setIcon(vetfotos[2]);
System.out.println("Entrou 1 if");
}
if(vetfotos[2].equals(vetfotos[2]))
{
jLabel1.setIcon(vetfotos[3]);
System.out.println("Entrou 2 if");
}
if(vetfotos[3].equals(vetfotos[3]))
{
jLabel1.setIcon(vetfotos[1]);
System.out.println("Entrou 3 if");
}
}
}, timeToRun);
}//fecha o construtor
GOSTEI 0
Carlos Heuberger
09/04/2009
[quote="Artdavi"]Galera eu gostaria de criar uma label que ficasse trocando de imagen
nele mesmo( tipo slide) ja capturei com new ImageIcon mas
Só que ele entra dentro do if mas so executa o 1º porque?
ai passa primeira imagen que eu forcei,entra segundo if e set imagem depois para.
Tá meio estranho tudo isso. Vários pontos:
* em Java o primeiro indice é zero e não 1
* As condições do "if" não fazem muito sentido, sempre verdadeiras:
public foto3() {
initComponents();
//System.out.println();
//carregaando vetor..forcei indice para fazer teste
vetfotos[1] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Picture1.png"); // aqui tem a tua imagem original
vetfotos[2] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Inverno.jpg"); // aqui tem a tua imagem original
vetfotos[3] = new ImageIcon("C:\\Documents and Settings\\asouza\\Meus documentos\\Minhas imagens\\jpeg\\Picture3.png"); // aqui tem a tua imagem original
int largura=1200; //Largura da Imagem
int altura=650; //Altura da Imagem
//configurando tamanho imagens
vetfotos[1].setImage( vetfotos[1].getImage().getScaledInstance(largura, altura, 100));
vetfotos[2].setImage(vetfotos[2].getImage().getScaledInstance(largura, altura, 100));
vetfotos[3].setImage(vetfotos[3].getImage().getScaledInstance(largura, altura, 100));
//------------------- carregou as imagens-----------------
//timer de imagen vai trocar a cada 2 segundos
int numberOfMillisecondsInTheFuture = 2000; // 3 sec
Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
jLabel1.setIcon(vetfotos[1]);//força a abri com uma imagen
if(vetfotos[1].equals(vetfotos[1]))
{
jLabel1.setIcon(vetfotos[2]);
System.out.println("Entrou 1 if");
}
if(vetfotos[2].equals(vetfotos[2]))
{
jLabel1.setIcon(vetfotos[3]);
System.out.println("Entrou 2 if");
}
if(vetfotos[3].equals(vetfotos[3]))
{
jLabel1.setIcon(vetfotos[1]);
System.out.println("Entrou 3 if");
}
}
}, timeToRun);
}//fecha o construtor
if(vetfotos[1].equals(vetfotos[1]))
...
TimerTask task = new TimerTask() {
private int imagem = 0;
@Override
public void run() {
if (imagem >= vetfotos.length) {
imagem = 0;
}
jLabel1.setIcon(vetfotos[imagem]);
imagem += 1;
}
};
Timer timer = new Timer();
timer.schedule(task, 0, numberOfMillisecondsInTheFuture);
...GOSTEI 0
Arthur Davi
09/04/2009
Hoo valeu mesmo hem "vcs so bom" e que eu tinha forçado para a imagen ser igual para entrar dentro do if mesmo,arrumei aqui implementei,funfo certinho
Abraços :razz:
GOSTEI 0
Tiago Trevizan
09/04/2009
Estou com um problema, espero que possam me ajudar !!!
Estou fazendo um jogo de dados, e fiz um JPanel com 5 imagens de dados !!!
Eu gostaria que quando sortea-se o dado aparecesse a imagem do dado sorteado !!!
Estou fazendo da seguinte forma mas nao da certo ....
if (dado1==1)
{
imageLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("C:/Users/usuario/Desktop/Bozo2 - epn drive/src/bozo/imagem/d1.JPG")));
imageLabel1.setName("imageLabel1");
}
if (dado1==2)
{
imageLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("C:/Users/usuario/Desktop/Bozo2 - epn drive/src/bozo/imagem/d2.JPG")));
imageLabel1.setName("imageLabel1");
}
Estou usando 5 imageLabel ....
Se alguem pudesse me ajuda eu agradeceria !!!
GOSTEI 0
Carlos Heuberger
09/04/2009
Bom dia.
Não é o mesmo problema sendo discutido aqui...
se pelo menos estivesse carregando as imagens do mesmo jeito que foi discutido acima...
O que exatamente significa "nao da certo"?
O código deve estar lançando uma Exception - a mensagem dela deveria indicar qual o problema e onde está ocorrendo. Sem essas informações somente chutando:
O getResource (obtido da classe) serve para carregar arquivos indicados pelo CLASSPATH. Tenta sem o getResource:
[[]]
[quote="tiagooot"]Estou com um problema, espero que possam me ajudar !!!
Estou fazendo um jogo de dados, e fiz um JPanel com 5 imagens de dados !!!
Eu gostaria que quando sortea-se o dado aparecesse a imagem do dado sorteado !!!
Estou fazendo da seguinte forma mas nao da certo ....
// não testado
imageLabel1.setIcon(new javax.swing.ImageIcon("C:/Users/usuario/Desktop/Bozo2 - epn drive/src/bozo/imagem/d1.JPG"));
if (dado1==1)
{
imageLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("C:/Users/usuario/Desktop/Bozo2 - epn drive/src/bozo/imagem/d1.JPG")));
imageLabel1.setName("imageLabel1");
}
if (dado1==2)
{
imageLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("C:/Users/usuario/Desktop/Bozo2 - epn drive/src/bozo/imagem/d2.JPG")));
imageLabel1.setName("imageLabel1");
}
Estou usando 5 imageLabel ....
Se alguem pudesse me ajuda eu agradeceria !!! GOSTEI 0
Tiago Trevizan
09/04/2009
é o seguinte...
estou carreganda as fotos tudo certinho...
essa é a funçao que gera os numero dos dados ao clicar no bota...
Porem o imagemLabel1 , imagemLabel2 , imagemLabel3 , imagemLabel4 e imagemLabel5 estao em outra função que é a iniComponentes();
como faço pra reconhecer os imagensLabels e consequentemente trocar as imagens de acordo com o numero sorteado....
private void btnRodarDadosActionPerformed(java.awt.event.ActionEvent evt) {
Random valor = new Random();
ImageIcon[] icones=null;
icones = new ImageIcon[6];
icones[0] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d1.JPG");
icones[1] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d2.JPG");
icones[2] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d3.JPG");
icones[3] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d4.JPG");
icones[4] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d5.JPG");
icones[5] = new ImageIcon("C:/Users/usuario/Desktop/Bozo/src/bozo/imagem/d6.JPG");
if (jogadas < 3) {
cbD1.setEnabled(true);
cbD2.setEnabled(true);
cbD3.setEnabled(true);
cbD4.setEnabled(true);
cbD5.setEnabled(true);
//btnRodarDados.setText("Rodar Dados");
if (!cbD1.isSelected()) {
dado1 = valor.nextInt(6) + 1;
imageLabel1.setIcon(icones[dado1-1]);
cbD1.setText(Integer.toString(dado1));
}
if (!cbD2.isSelected()) {
dado2 = valor.nextInt(6) + 1;
cbD2.setText(Integer.toString(dado2));
imageLabel2.setIcon(icones[dado2-1]);
}
if (!cbD3.isSelected()) {
dado3 = valor.nextInt(6) + 1;
imageLabel3.setIcon(icones[dado3-1]);
cbD3.setText(Integer.toString(dado3));
}
if (!cbD4.isSelected()) {
dado4 = valor.nextInt(6) + 1;
imageLabel4.setIcon(icones[dado4-1]);
cbD4.setText(Integer.toString(dado4));
}
if (!cbD5.isSelected()) {
dado5 = valor.nextInt(6) + 1;
imageLabel5.setIcon(icones[dado5-1]);
cbD5.setText(Integer.toString(dado5));
}
jogadas++;
System.out.println("Jogadas: " + jogadas);
txJogada.setText("Jogadas restantes: " + (3 - jogadas));
}
if (jogadas >= 3) {
btnRodarDados.setText("Nova Rodada");
cbD1.setSelected(true);
cbD2.setSelected(true);
cbD3.setSelected(true);
cbD4.setSelected(true);
cbD5.setSelected(true);
LiberaCampo();
}
} GOSTEI 0
Arthur Davi
09/04/2009
Amigo se eu entedi bem......vc esta com problema em reconhecer a imagem(label)? associar?
eu usaria o metodo [b]Math.random[/b] ai vc colocaria os numeros de 0 5 das fotos e ele sortearia aleatoriamente o numeros.
e vc associava ele a foto para mostrar
se for isso posta ai que implemento a 'a luz' no seu codigo.
GOSTEI 0
Tiago Trevizan
09/04/2009
O problema nao é sorteador o numero nem associar o numero com a figura do dado !!
O problema é com os imageLabel.setIcon que nao podem ser usados pois os imageLabels foram criados em outra funçao que é a public void initComponents();
Quando tento usar aparece "cannot find symbol" no netBeans !!!
GOSTEI 0
Arthur Davi
09/04/2009
[quote="tiagooot"]O problema nao é sorteador o numero nem associar o numero com a figura do dado !!
O problema é com os imageLabel.setIcon que nao podem ser usados pois os imageLabels foram criados em outra funçao que é a public void initComponents();
Quando tento usar aparece "cannot find symbol" no netBeans !!!
Tiago posta o codigo da criação dos labels!
mas eu crio os labens pela ide do netbens e não na raça!
porque eu ja fiz trampo que chamava label dentro do botao e nao deu xabu!
private void lbltopoAncestorMoved(java.awt.event.HierarchyEvent evt) {
imagenstopo[0] = new ImageIcon("C:\\Players\\Picture1.png");
imagenstopo[1] = new ImageIcon("C:\\Players\\Inverno.jpg");
imagenstopo[2] = new ImageIcon("C:\\Players\\Picture3.png");
int largura=1254; //Largura da Imagem
int altura=254; //Altura da Imagem
//configurando tamanho imagens
imagenstopo[0].setImage(imagenstopo[0].getImage().getScaledInstance(largura, altura, 100));
imagenstopo[1].setImage(imagenstopo[1].getImage().getScaledInstance(largura, altura, 100));
imagenstopo[2].setImage(imagenstopo[2].getImage().getScaledInstance(largura, altura, 100));
lbltopo.setIcon(imagenstopo[0]);
GOSTEI 0