Olá pessoal, sempre pesquisei aqui, mas é a primeira vez que pergunto…
Seguinte, tenho uma aplicação desktop que estou fazendo pelo NetBeans, e preciso gerar o .jar para o cliente.
Ao geraro .jar o seu funcionamento é perfeito.
O problema é: Minha imagem de fundo, na tela de login, não aparece. Fica como se não tivesse nenhuma imagem, mas, lógico que quando executo o projeto pelo próprio NetBeans, a imagem aparece.
Pesquisei um pouco mais não encontrei nada.
Se alguem já estiver passado por isso, ou queira ajudar, agradeceria muito.
Segue o código da classe Login e da classe Fundo(que pinta o painel):
Classe Login.java
public class Login extends JFrame implements KeyListener, ActionListener {
static JTextField loginInput;
static JPasswordField senhaInput;
public Login() {
// Paineis
Color transparente = new Color(0,0,0,0);
Image image = new ImageIcon("src/imagens/fundo.png").getImage();
Fundo fundo = new Fundo(new GridBagLayout(), image);
GridBagConstraints c = new GridBagConstraints();
JPanel centro = new JPanel(new FlowLayout());
centro.setBackground(transparente);
JPanel paineisCentrais = new JPanel(new GridLayout(2,0));
paineisCentrais.setBackground(transparente);
JPanel painelTextos = new JPanel();
painelTextos.setBackground(transparente);
painelTextos.setLayout(new BoxLayout(painelTextos, BoxLayout.PAGE_AXIS));
JPanel painelButtons = new JPanel(new FlowLayout());
painelButtons.setBackground(transparente);
// Labels
JLabel login = new JLabel("Login");
JLabel senha = new JLabel("Senha");
// Campos de Texto
loginInput = new JTextField(15);
senhaInput = new JPasswordField(15);
loginInput.addKeyListener(this);
senhaInput.addKeyListener(this);
// Botões
JButton entrarButton = new JButton("Entrar");
JButton sairButton = new JButton("Limpar");
entrarButton.addActionListener(this);
//sairButton.addActionListener(this);
sairButton.setEnabled(false);
// Adicionando nos JPanels
painelButtons.add(entrarButton);
painelButtons.add(Box.createRigidArea(new Dimension(10, 50)));
painelButtons.add(sairButton);
painelTextos.add(login);
painelTextos.add(loginInput);
painelTextos.add(senha);
painelTextos.add(senhaInput);
paineisCentrais.add(painelTextos);
paineisCentrais.add(painelButtons);
centro.add(paineisCentrais);
c.insets = new Insets(200, 0, 0, 0);
fundo.add(centro, c);
// Adicionando no JFrame - Login
this.add(fundo);
this.setTitle("SCE .:. Sistema de Controle de Estoque");
this.setSize(350, 400);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public void logar(){
String login = loginInput.getText();
String senha = senhaInput.getText();
int tipoUsuario=0;
Usuario usu = new Usuario(login, senha);
tipoUsuario = MBD.buscarTipoUsuario(usu);
if((tipoUsuario== 1)||(tipoUsuario==2)){
Principal pri = new Principal(usu);
pri.setVisible(true);
setVisible(false);
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER){
logar();
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
@Override
public void actionPerformed(ActionEvent e) {
logar();
}
public void actionPerformedLimpar(ActionEvent e) {
loginInput.setText("");
senhaInput.setText("");
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Login();
}
});
}
}
Classe Fundo.java
public class Fundo extends JPanel {
private static final long serialVersionUID = 4207266224348163019L;
private Image image;
public Fundo(LayoutManager l, Image image) {
super(l);
this.image = image;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
}
Obrigado!