개발 공부/자바(Java)

[자바] GUI에서 더블버퍼링과 버튼에 삽입한 이미지만 보이는 코드

가이윤 2021. 11. 17. 19:27

한 번씩 예전에 했던것들이 기억이 안 나기 때문에 더블버퍼링 코드를 정리해야겠다ㅎㅎ

참고하실분들은 참고하시길

 

더블버퍼링

private Image img;
private Graphics img_g; //2개 필드에 추가

public void paint(Graphics g) {
		
	//-아래 과정은 화면에 바로 그리지 않고 메모리 내에서 이루어짐-//
	img = createImage(WIDTH, HEIGHT);
	img_g = img.getGraphics();
	paintComponents(img_g);
	img_g.drawLine(x, y1, x + 300, y2);
	img_g.drawImage(iconImage, 400, 500, null);
	img_g.drawString("Double Buffer : On ", 100, 500);
	//----------------------------------------------------//
	g.drawImage(img, 0, 0, null); //위의 과정을 마친 이미지를 한번만 화면에 그림
		
        
        repaint(); //강제로 paint함수 호출
 }

참고 블로그: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lghlove0509&logNo=221009877738 

 

[JAVA] 이중버퍼링(더블버퍼링) 예제

안녕하세요. 이번 포스팅에서는 이중버퍼링(Double Buffering)에 대해 간단히 설명할까합니다. 프로그램...

blog.naver.com

 

버튼

private ImageIcon buttonImage = new ImageIcon(현재클래스.class.
getResource("../images/start.png"));
JButton btn = new JButton(buttonImage); //buttonImage 이미지의 버튼생성

btn.setBorderPainted(false); //바깥 테두리 X
btn.setContentAreaFilled(false); //이미지파일 투명한 영역 색채우기 비활성
btn.setFocusPainted(false); // 안쪽 테두리 x

위 세 코드를 주석처리하면

이렇게 이미지 말고도 버튼과 관련된 것들이 표시된다.

때문에 이미지만 깔끔하게 나오기 위해 세 줄 코드를 추가하면

 

이렇게 원하는 이미지만 깔끔하게 나오게 된다.

이건 윈도우 빌더에서 버튼의 확장된 속성들에서도 찾을수 있다.