Duvida com Graphics2D

gente, tó com um problema que me deixou travado, é que quando eu mando exibir uma imagem que tenha que ocupar toda janela, eu sempre perco alguns pixels dessa imagem nas bordas da janela, conseguir resolver isso, mas isso me parece mais um “gambiarra” do que uma solução pratica.

Classe Main

[code]public class Main {

public static void main(String[] args) {
	Jan jan=new Jan();
	
	while (true) {
		jan.Ja();
		
	}

}

}
[/code]

Classe Jan

[code]import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Jan {

private BufferedImage frame;
private BufferStrategy bufa;
private JFrame janela;

public Jan(){
	janela=new JFrame();
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	janela.setBounds(0, 0, 816, 639);
	janela.setLocationRelativeTo(null);
	janela.setIgnoreRepaint(true);
	janela.setVisible(true);
	janela.createBufferStrategy(2);
	bufa=janela.getBufferStrategy();
	URL imgUrl1 = getClass().getResource("imagem/titulo.bmp");//faz uma URL para a imagem
	try {
		frame = ImageIO.read(imgUrl1);
	} catch (IOException e) {
		
		e.printStackTrace();
	}		
}

public void Ja(){
	Graphics2D g=(Graphics2D)bufa.getDrawGraphics();
	
	g.drawImage(frame, 8, 31, null);
	
	g.dispose();
	bufa.show();
}

}[/code]

a imagem tem 800x600 e para evitar a perda nas bordas em

[code] Graphics2D g=(Graphics2D)bufa.getDrawGraphics();

	    g.drawImage(frame, 8, 31, null);

[/code]

eu tive que empurrar a imagem 8px no eixo X e 31px no eixo Y, e a janela eu tive que fazer com um tamanho de 816x639, existe alguma forma mais pratica e adequada de fazer essa imagem aparecer na janela sem perdas nas bordas?

e como que eu posso fazer para que a imagem acompanhe o redimensionamento da janela? Exemplo: se eu pegar e esticar a tela, a imagem seria esticada junto na mesma proporção, mesmo que isso distorcesse a imagem.

ha… sobre a segunda pergunta, para me não dar certo só pegar os valores da janela pelo getWidth() getHeight(), alguns dos frames serão compostos por mais de uma imagem que se encaixão para formar uma imagem que ocupe toda a janela.

Pessoal alguem sabe como faco para desenhar figuras 2D sem usar as bibliotecas do java,uma implementacao pura sem bibliotecas