Java - Imagens para menu!

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:
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

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
 
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");
 
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");

Mas essa "images" que tas a falar ta onde especificamente? dentro da pasta do projecto?
 
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!!
 
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:
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...
 
Hmm, se puderes, coloca aqui o comando que estás a utilizar para compilar e a estrutura de pastas do projecto.

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....
 
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.
 
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.


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...
 
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:
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
 
Back
Topo