1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java - Imagens para menu!

Discussão em 'Programação' iniciada por JomarC, 23 de Janeiro de 2008. (Respostas: 16; Visualizações: 4615)

  1. JomarC

    JomarC Power Member

    Boas

    Tenho uma duvida no netbeans!

    Queria importar uma imagem para servir de background da minha janela.....alguem pode ajudar?


    Cumps

    Deixo aqui o codigo da minha janela:

    public static void main(String[] args) {
    JFrame janela= new Menu("Viaturas");
    janela.setSize(400,300);
    janela.setVisible(true);
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


    Agora so falta a imagem....
     
    Última edição pelo moderador: 23 de Janeiro de 2008
  2. rj.rodrigues

    rj.rodrigues Power Member

    Deve haver varias maneiras. Sinceramente nunca fiz nada disso mas penso k podes fazer usando o Graphics
    http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics.html
    Código:
    public void imgFundo(Graphics g, ImageIcon img){
      g.drawImage(img.getImage(), 0, 0, 300, 200, Color.BLUE, null);
      super.paintChildren(g);
    }
    em k a tua class é um extend do JPanel
     
  3. JomarC

    JomarC Power Member

    Desde ja um obrigado!

    Pelo que tu me deste e fui fazer uma pesquisa no google e encontrei qualquer coisa como isto:

    public class BackgroundImage extends JFrame
    {
    JScrollPane scrollPane;
    ImageIcon icon;
    Image image;

    public BackgroundImage()
    {
    icon = new ImageIcon("???.jpg");

    JPanel panel = new JPanel()
    {



    A minha questao é: ("??.jpg") é o caminho onde esta a imagem? ou dentro do jar e necessario por la a imagem?

    Cumps
     
  4. AliFromCairo

    AliFromCairo Power Member

    Podes fazer das duas maneiras. Tipicamente, acedes à imagem através da seguinte forma (assumindo que a imagem se chama "a.jpg" e se encontra na pasta images/):

    Código:
    getClass().getResource("images/a.jpg");
    
     
  5. JomarC

    JomarC Power Member

    Mas essa "images" que tas a falar ta onde especificamente? dentro da pasta do projecto?
     
  6. AliFromCairo

    AliFromCairo Power Member

    Sim. O método getResource() vai procurar a imagem nos directórios e jars que estejam na classpath da tua aplicação.
     
  7. JomarC

    JomarC Power Member

    Ok! Obrigado vou tentar isso!

    Ja agora...lol....e imagens para botoes e igual??
     
  8. AliFromCairo

    AliFromCairo Power Member

    Penso que a classe JButton tem um construtor que recebe um Icon como argumento. Portanto sim, podes usar o mesmo método.
     
  9. JomarC

    JomarC Power Member

    Bem tentei mas nada! lol

    package viaturas;

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

    public class Main extends JFrame{


    static JLabel label;
    static Icon ic;

    public Main() {
    }

    public static void main(String[] args){

    JFrame janela= new Menu("Viaturas");
    label=new JLabel();
    String imagem="imagens/menu.jpeg";
    ic=new ImageIcon(imagem);
    label.setBounds(0,0,400,300);
    label.setIcon(ic);
    janela.add(label);
    janela.setSize(400,300);
    janela.setVisible(true);
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    }

    Nao aparece a imagem!!
     
  10. AliFromCairo

    AliFromCairo Power Member

    Podes utilizar o método getResource() para obter a imagem (já tinha referido num post anterior):

    Código:
    Icon icon = new ImageIcon(getClass().getResource("imagens/menu.jpg"));
    label.setIcon(icon);
    
    No entanto, se quiseres invocar o método getResource() dentro de um método estático vais ter problemas, pois não podes utilizar o método getClass(). Para resolver esta situação podes utilizar algo do género: Menu.class.getResource("imagens/menu.jpg").
     
    Última edição: 24 de Janeiro de 2008
  11. JomarC

    JomarC Power Member

    ic=new ImageIcon(Menu.class.getResource("imagens/menu.jpg"));

    Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
    at viaturas.Main.main(Main.java:20)
    Java Result: 1


    Da me este erro...
     
  12. AliFromCairo

    AliFromCairo Power Member

    Hmm, se puderes, coloca aqui o comando que estás a utilizar para compilar e a estrutura de pastas do projecto.
     
  13. JomarC

    JomarC Power Member

    E simples

    package viaturas;

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

    public class Main extends JFrame{

    static JLabel label;
    static Icon ic;

    public Main() {
    }

    public static void main(String[] args){
    JFrame janela= new Menu("Viaturas");
    label=new JLabel();
    //String imagem="imagens/menu.jpeg";
    ic=new ImageIcon(Menu.class.getResource("imagens/menu.jpg"));
    label.setBounds(0,0,400,300);
    label.setIcon(ic);
    janela.add(label);
    janela.setSize(400,300);
    janela.setVisible(true);
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    }

    So quero por uma imagem neste frame...nao prexixo de por mais classes....
     
  14. AliFromCairo

    AliFromCairo Power Member

    A estrutura das pastas do teu projecto é importante para determinar a string que deves utilizar para especificar o path da tua imagem.

    Vou assumir que a pasta imagens/ não se encontra dentro da pasta viaturas/, pois caso contrário não devias ter o problema que mencionaste.

    Se a tua estrutura de pastas for algo deste género:
    • /src
      • /viaturas
    • /images
    Podes usar isto (nota o / antes de "imagens", para indicar que é um caminho "absoluto"):

    Código:
    new ImageIcon(Menu.class.getResource("[B][COLOR=royalblue]/[/COLOR][/B]imagens/menu.jpg"));.
    
    Penso que assim deve funcionar, se a estrutura de pastas do teu projecto for semelhante à que coloquei acima. Experimenta e diz qualquer coisa.
     
  15. JomarC

    JomarC Power Member


    A minha estrutura de pastas esta exactamente como a que tu mencionas te em cima...

    Ja exprimentei e nada. Continua a dar o mesmo erro...
     
  16. AliFromCairo

    AliFromCairo Power Member

    Bom, eu testei agora no meu portátil e a imagem aparece correctamente. Não usei o netbeans. Verifica se os nomes estão mesmo correctos, ou seja, se tens mesmo um ficheiro com o nome menu.jpg (case sensitive) e que este está dentro de uma pasta com o nome imagens. Caso esteja tudo correcto, o problema pode estar relacionado com o netbeans.

    Se o problema estiver de facto relacionado com o netbeans, podes experimentar o seguinte: vai à pasta onde o netbeans guardou o teu projecto, procura a pasta src/ e copia a pasta imagens/ lá para dentro (apaga-a também do sítio onde estava anteriormente). Se estiveres o netbeans aberto, ele deve actualizar a tab "Projects", colocando um novo package com o nome "imagens" dentro do "Source Packages". Depois disto, experimenta fazer clean & build e correr aplicação de novo. O código para abrir a imagem mantém-se inalterado (i.e. Menu.class.getResource("/imagens/menu.jpg")).
     
    Última edição: 24 de Janeiro de 2008
  17. JomarC

    JomarC Power Member

    Dass!!

    Finalmente! :p O problema nao tava na programaçao!

    Desde ja um obrigado pelo tempo que gastas te a ajudar um noob!! lool

    Cumps
     

Partilhar esta Página