Salvar imagens dos botoes dentro da aplicação JAVA

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