Estou desenvolvendo o projeto em mvc no metodo swing, estou colocando imagens nos botões
ai fui dentro do scr e crie uma pasta imagens e coloqueis a imagens la.
Ai no botão passo esse parâmetro
EX:
btnCancelar.setIcon(new ImageIcon("/teste/teste/src/Imagens/cancelar.png"));
Porem a minha duvida é, a pasta onde fica as imagens, fica visivel na pasta do projeto, não só por isso, o caminho passado ai esta como C: caso eu mude de caminho as imagens não irão aparecer mais.
tem alguma forma de mudar isso ?
Se puder me dar um exemplo por gentileza
Oi Patrick…voc esta clicando nas propriedades do botão em indo em icon e selecionando a pasta das imagens?
Tu pode ler os bytes dos arquivos que estão no classpath, com isso vc conseguira criar ImageIcon com esses bytes:
private byte[] readResourceBytes(String path) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
InputStream is = Main.class.getClassLoader().getResourceAsStream(path);
byte[] buffer = new byte[1024];
int read;
while ((read = is.read(buffer)) != -1) {
baos.write(buffer, 0, read);
}
return baos.toByteArray();
} catch (IOException e) {
// faça o tratamento de erro de acordo com seu projeto aqui
return null;
}
}
Para usar:
ImageIcon imageIcon = new ImageIcon(readResourceBytes("imagem.png"));
Estou fazendo por código
Método swing , sem interface
Meu código do botão esta assim.
btnCancelar = new JButton("Cancelar");
btnCancelar.setBounds(160, 160, 115, 35);
btnCancelar.setIcon(new ImageIcon("/teste/teste/src/Imagens/cancelar.png"));
btnCancelar.setFont(new Font("Arial", 1, 13));
btnCancelar.setHorizontalTextPosition(SwingConstants.RIGHT);
painelCadastroProduto.add(btnCancelar);