View Full Version : Java - Imagens para menu!
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_CLO SE);
}
Agora so falta a imagem....
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
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
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
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
AliFromCairo 23-01-2008, 23:44 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/):
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/):
getClass().getResource("images/a.jpg");
Mas essa "images" que tas a falar ta onde especificamente? dentro da pasta do projecto?
AliFromCairo 23-01-2008, 23:55 Sim. O método getResource() vai procurar a imagem nos directórios e jars que estejam na classpath da tua aplicação.
Sim. O método getResource() vai procurar a imagem nos directórios e jars que estejam na classpath da tua aplicação.
Ok! Obrigado vou tentar isso!
Ja agora...lol....e imagens para botoes e igual??
AliFromCairo 24-01-2008, 00:03 Penso que a classe JButton tem um construtor que recebe um Icon como argumento. Portanto sim, podes usar o mesmo método.
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_CLO SE);
}
}
Nao aparece a imagem!!
AliFromCairo 24-01-2008, 17:24 Podes utilizar o método getResource() para obter a imagem (já tinha referido num post anterior):
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").
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...
AliFromCairo 24-01-2008, 19:35 Hmm, se puderes, coloca aqui o comando que estás a utilizar para compilar e a estrutura de pastas do projecto.
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_CLO SE);
}
}
So quero por uma imagem neste frame...nao prexixo de por mais classes....
AliFromCairo 24-01-2008, 21:28 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
/imagesPodes usar isto (nota o / antes de "imagens", para indicar que é um caminho "absoluto"):
new ImageIcon(Menu.class.getResource("/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
/imagesPodes usar isto (nota o / antes de "imagens", para indicar que é um caminho "absoluto"):
new ImageIcon(Menu.class.getResource("/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...
AliFromCairo 24-01-2008, 21:59 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")).
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
|
|