Página Inicial do Fórum > GUI - (Applets, Swing, SWT, etc)

como colocar uma figura .jpg em um frame??



Criar novo tópico   Responder tópico


  1. petrick
    Posts:9


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Estou com dificuldades em colocar uma figura jpg em um frame do meu programa, se alguem souber ou tiver um codigo que seja compativel eu agradeco!!
    Valeu obrigado



  1. TriTonE
    Posts:1576


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44



    []s!
    _________________
    Daniel F. Martins



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53

    Alguem sabe o porque que a imagem não aparece????





  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    Onde vc colocou a sua imagem??

    por exemplo eu uso netbeans e coloco as imangens dentro da pasta
    NetBeansProjects\MeuProjeto\build\classes

    blz, qualquer coisa posta ai.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53

    krismorte
    Onde vc colocou a sua imagem??

    por exemplo eu uso netbeans e coloco as imangens dentro da pasta
    NetBeansProjects\MeuProjeto\build\classes

    blz, qualquer coisa posta ai.



    Tá na raiz do projeto. Era pra ter achado.



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53



    Deu certo depois que coloquei o caminho completo.
    Só não entendi porque eu tenho que coloca-lo completo, visto que a imagem esta na raiz do projeto.
    E outra ele só aparece se eu clicar no botão maximizar, ai afigura aparece. Alguem entendeu porque?[/code]



  1. simu
    Posts:9417


    Comment Arrow

    Publicado em: 01/09/2009 00:29:22

    Alex.person
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    public class MyFrame extends JFrame {

    public MyFrame() {
    getContentPane().add(new JLabel(new ImageIcon("c:/Exercicios/Aprendend/bin/pab.jpg")));
    }

    public static void main(String[] args){
    MyFrame mf =new MyFrame();
    mf.setVisible(true);
    mf.setSize(300,300);
    mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mf.setLocationRelativeTo(null);
    }
    }
    Deu certo depois que coloquei o caminho completo.
    Só não entendi porque eu tenho que coloca-lo completo, visto que a imagem esta na raiz do projeto.
    E outra ele só aparece se eu clicar no botão maximizar, ai afigura aparece. Alguem entendeu porque?


    Apesar de não importar qual a raiz do projeto, a imagem aparentemente está no diretório "c:/Exercicios/Aprendend/bin/" e provavelmente tambem num diretório "c:/Exercicios/Aprendend/src/", mas acho que a raiz do projeto seria o "c:/Exercicios/Aprendend/"??!!
    O importante é o diretório onde voce está rodando o programa, o tal do "Working Directory". Na sua IDE deve ter como configurar esse diretório!

    É meio estranho a imagem somente aparecer depois de maximizar. Testei aqui e funcionou perfeitamente, inclusive com imagens maiores... O que voce pode tentar, é fazer o setVisible por último (depois do setSize e do setLocation!). Pelo menos evita do JFrame aparecer momentaneamente na origim, para depois ser deslocado para o centro. Se usar o pack() em vez do setSize(), o JFrame vai ter o tamanho da imagem.


    []]

    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53

    Valeu krismorte e simu caros colegas pela ajuda, mas a imagem não ficou como plano de fundo. Quando adiciono qualquer componente eles ficam por trás da imgem. O que falta no codigo?



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    Bem eu suspeitei desde o começo que vc queria realmente era um plano de fundo.

    a pouco tempo atras eu peguei essa classe aqui no JF, e não uso outra. .
    Olha ai:

    Chamada da classe:


    Qualquer coisa posta ai.

    vlw.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. simu
    Posts:9417


    Comment Arrow

    Publicado em: 01/09/2009 00:29:22

    krismorte
    Bem eu suspeitei desde o começo que vc queria realmente era um plano de fundo.

    a pouco tempo atras eu peguei essa classe aqui no JF, e não uso outra. .
    Olha ai:

    Chamada da classe:


    Qualquer coisa posta ai.

    vlw.


    mas dá uma corrigida na identação, e, por favor, não deixa esse catch vazio!!!!!


    e não acho legal ficar pegando a imagem toda vez que o componente for redesenhado (paintComponent). Melhor carregar a imagem uma única vez dentro do construtor, ou até, passar a Imagem como argumento do construtor...
    []]
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    em relação ao catch foi mal...

    mas qual seria a diferença de passar a imagem como parametro, vamos supor por exemplo q essa imagem va para um JOptionPane q será chamando varias vezes, essa imagem não vai ser carregada e redesenhada toda vez q eu chamar o JOpitionPane????

    Alex.person, conseguiu colocar a imagem como plano de fundo???

    vlw.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. simu
    Posts:9417


    Comment Arrow

    Publicado em: 01/09/2009 00:29:22

    krismorte
    em relação ao catch foi mal...

    mas qual seria a diferença de passar a imagem como parametro, vamos supor por exemplo q essa imagem va para um JOptionPane q será chamando varias vezes, essa imagem não vai ser carregada e redesenhada toda vez q eu chamar o JOpitionPane????

    Alex.person, conseguiu colocar a imagem como plano de fundo???

    vlw.


    ( carregar = ler do disco )

    se voce passar uma instancia de Image para o JOptionPane, a imagem não será carregada.
    O método "paintComponent" será chamado pela GUI toda vez que tiver que desenhar a janela (após mudança do tamanho da janela, outra janela foi arrastada por cima da primeira, mostrar a janela depois de ter sido minimisada,...). Adicione um System.out.println(myurl) para ver quando esse método é chamado.
    Portanto se fizer:

    estará carregando a imagem do disco toda vez que isso acontecer....

    Além disso não acho muito OO se a janela tiver que carregar a imagem. O que faria se fosse para usar uma imagem sintética, gerada pelo programa? Tem que salvar no disco para então poder usaro PlanoDeFundo...
    []]

    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    Huuuuuuummm!!!

    I'm update code now!!!

    vlw


    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53


    Ainda não krismorte!
    Estou programando com o eclipse europa.Essa parte do codigo não reconhece. Fica sublinhado de vermelho, já tentei os imports e simplemente não o aceita. E tambem a JVM não aceita da erro. Eu peguei o seu ex copiei e colei e a nada. Alguma ideia?



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53

    E vai puxar a imagem da onde?
    Simu o que voce recomenda como codigo para não puxa do disco toda vez? Dar um exemplo pra nós! Se possivel aproveitando o exemplo do krismorte.



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    cara o import q eu uso é:


    Eu uso o NetBeans 6.1, mas o exemplo tambem roda no Eclipse Ganymede 3.4.1

    Cara posta o alerta que o eclipse mostra.

    vlw
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55


    E vai puxar a imagem da onde?
    Simu o que voce recomenda como codigo para não puxa do disco toda vez? Dar um exemplo pra nós! Se possivel aproveitando o exemplo do krismorte.



    Não é bem de onde é so a forma q se puxa, eu fiz o teste q o Simu propos de da Systme.out.print(myurl) e toda vez q eu movia a janela o prin a contecia e se o print acontecia quer dizer q a imagem era carregada, ou seja, o meu programa ia a disco pegar a imagem o q eu fiz.
    Classe PlanoDeFundo:


    Chamada da classe:


    blz.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. simu
    Posts:9417


    Comment Arrow

    Publicado em: 01/09/2009 00:29:22

    é assim que eu faria...
    dessa forma a classe fica mais "limpa", tem uma função bem definida
    []]
    _________________
      Nome real: Carlos F. Heuberger

    Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!

    "The mod javafree deserves, but not the one it needs right now."
    --------------------
    Não leio nem respondo MPs!
    This posting is provided AS IS with no warranties and confers no rights.



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53

    krismorte

    E vai puxar a imagem da onde?
    Simu o que voce recomenda como codigo para não puxa do disco toda vez? Dar um exemplo pra nós! Se possivel aproveitando o exemplo do krismorte.



    Não é bem de onde é so a forma q se puxa, eu fiz o teste q o Simu propos de da Systme.out.print(myurl) e toda vez q eu movia a janela o prin a contecia e se o print acontecia quer dizer q a imagem era carregada, ou seja, o meu programa ia a disco pegar a imagem o q eu fiz.
    Classe PlanoDeFundo:


    Chamada da classe:


    blz.


    Só não entendi esta: Chamada da classe
    Como eu uso ela? ex por favor.



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    lembra do primeiro exemplo q eu dei:


    pronto agora olha o segundo


    agora um JOIN:


    kkkkkkkk, sim o problema do Graphics, resolveu???

    vlw.

    OBS: não entendo muito do toolkit, mas ele sempre estará relacionado a interface grafica.
    A classe PlanoDeFundo extends um JPanel, na pratica essa classe é uma "especialização" da classe JPanel, ela é um JPanel com uns adereços.
    Quando eu digo q o ContentPanel do Frame e o content tudo q estiver no contet será desenhado em cima do frame, mudando o BackGround default do JFrame.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53


    Eu só não sei onde colocar este ex. Entendeu?
    O resto deu certo.
    veja como ficou o meu codigo.

    O que estar errado?



  1. krismorte
    Posts:380


    Comment Arrow

    Publicado em: 31/08/2009 11:14:55

    bem peguei seu codigo e ele aponta q vc esta utilizando variaveis não-estaticas em um contexto estatico
    adptei seu codigo e agora vai


    mas a classe plano de fundo não e pra ser utilizada dessa forma.
    Vc provavelmte terá varias JFrames no seu projeto vc tem q setar a classe PlanpDeFundo no constructor de todas os JFrames q terão plano de fundo blz.

    vlw.
    _________________
    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. Alex.person
    Posts:9


    Comment Arrow

    Publicado em: 31/08/2009 11:10:53


    Ficou legal! E está funcionando finalmente!
    Eu só acrecentei um botão para mostrar que esta como plano de fundo mesmo! Valeu pela paciencia!



  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> GUI - (Applets, Swing, SWT, etc)