Ajuda com jlabel

8 respostas
L

Então pessoal, estou com um problema, estou usando o método paintComponent para definir uma imagem em um jpanel, porem não estou conseguindo colocar um jlabel em cima do jpanel, segue o cod, estou usando uma classe para armazenar as configurações, assim chamando elas no jframe principal, grato! *obs: estou usando layout de borda, se eu mudo o layout a imagem não aparece

public class Configurações extends javax.swing.JPanel {
    BufferedImage imgBack;
    
    public Configurações(){
        try {
            this.imgBack = ImageIO.read(new File("C:\\Users\\Luan\\Desktop\\Game\\Game\\build\\classes\\Graphich\\BackgroundInicio.png"));
        } catch (IOException ex) {
            Logger.getLogger(Configurações.class.getName()).log(Level.SEVERE, null, ex);
        } 
    }
    protected void paintComponent(Graphics g){
       super.paintComponent(g);
       g.drawImage(imgBack.getScaledInstance(800, 620, 0), 0, 0, null);
    }
}

8 Respostas

11124

Olá amigo! eu criei este código espero ajudar. Ai para tu usar este objeto coloca um JPanel na tela principal instanciando a criação desta classe. é só clicar botão direito do JPanel e personalizar código , na parte de criação tu muda de padrão para personalizada, chamando este JPanel ex:

javax.swing.JPanel jpanel =  PainelImagem.getInstance();
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.radiobox.utilitarios;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;

/**
 *
 * @author thiago-
 */
public class PainelImagem extends JPanel {
    
    private final Image fundo = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/nome/do/pacote/suaimagem.formato"));

    private static final long serialVersionUID = 1L;

    private PainelImagem() {

    }

    public static PainelImagem getInstance() {
        return PainelImagemHolder.INSTANCE;
    }

    private static class PainelImagemHolder {

        private static final PainelImagem INSTANCE = new PainelImagem();
    }

    /**
     *
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        g.drawImage(fundo, 0, 0, getWidth(), getHeight(), this);
       
    }
  
}
L
Olá amigo, eu fiquei um pouco perdido nesse código, teve alguns códigos que eu não mexi ainda:

javax.swing.JPanel jpanel =  PainelImagem.getInstance();

essa função faz exatamente o que ?

Segue o cód do meu jFrame principal, o jframe é constituido com um jpanel dentro dele no qual eu puxo a classe:

public class Menu extends javax.swing.JFrame {

PainelImagem objImg = new PainelImagem();

public Menu() {

initComponents();

setLocationRelativeTo(this);

this.imgPanel.add(objImg);

IconesMenu();

}

public void IconesMenu(){

URL caminhoicone = getClass().getResource("/Graphich/Icone.png");

Image img = Toolkit.getDefaultToolkit().getImage(caminhoicone);

this.setIconImage(img);

}
11124

Então esta parte ele estará chamando o objeto PainelImagem já com a imagem nele. Tu só tem que informar o caminho da imagem lá na classe PainelImagem depois alterar a criação do JPanel do seu JFrame para criação personalizada. Só para tu saber esta classe está utilizando padrão singleton , que lhe garante uma unica instancia do objeto. qualquer outra duvida só perguntar tentarei responder o mais breve possivel.

L

Muito obrigado, entendi o que quis me passar, mas… agora fiquei com outra duvida, essa criação personalizada, aonde que fica?

11124

Na IDE Netbeans no momento que tu colocar o JPanel no JFrame tu clica com botao direito sobre o JPanel procure por personalizar codigo … ai e so fazer as alteracoes que indiquei. vlw qualquer outra duvida so dar um alo…

L

Então, consegui colocar a imagem com o seu procedimento, porem não consigo adicionar labels nem button no JPanel

11124

tem como tu me mandar seu projeto , codigo ou print para que eu possa ver onde tu esta errando…

L

Segue o link do projeto, não tem como anexar o arquivo pois sou novato no forum.


obs: depois da uma olhada na sua caixa de mensagem no fb, deve ter caido na caixa de spam!

Criado 19 de setembro de 2016
Ultima resposta 22 de set. de 2016
Respostas 8
Participantes 2