[swing]repaint() 에 대한 질문입니다.
진달래
저번에 질문했었는데 repain()를 쓰면 바로 지워지네요 사각형이...구체적으로 질문 다시 올립니다..;;ㅈㅅ;;
제가 JPanel 을 상속받은 클래스에서 버튼을 클릭할때마다 패널에 사각형을 그리게 하기위해
actionperformed 메쏘드안에
if(e.getSource() == bntInvite){
Graphics g=this.getGraphics();
g.setColor(Color.RED);
g.fillRect(440, 295, 95, 20);
}
이런식으로 선언을 해놨는데요 최소화를 하거나 창위에 다른창이 올라가면 사각형이 지워져버리더군요 ㅡㅜ
그래서 좀 알아봤더니 repaint() 메쏘드를 쓰면 될껏같은데어떤식으로 써야될지 잘 모르겠네요..
paintComponent 메쏘드에 쓰란 소리도 있던데 제가 이 메쏘드는 배경이미지를 넣을려고 벌써 이런식으로 사용했거든요..
public void paintComponent(Graphics g)///////배경이미지넣기
{
g.drawImage(img.getImage(), 0, 0, this.getSize().width, this.getSize().height, null);
setOpaque(false);
super.paintComponent(g);
}
사각형이 안지워지게 할려면 어떻게 해야 할까요 ㅡㅜ 답변부탁드립니다
-
가시내
힌트를 드리자면 버튼 클릭 이벤트에서는 사각형을 그리는 코드를 그리는 것이 아니라 찬님이 말씀하신 버튼이 클릭되었다는 변수를 지정한 다음에 컴포넌트를 다시 그리는 메소드를 호출하는 것입니다.
-
꽃짱구
버튼이 클릭되었는지 확인하는 변수를 하나 놔두고,
버튼이 클릭되었다면 paintComponent안에서 그려주면 됩니다.
public void paintComponent(Gr...) {
super.printComponent(g);
if ( btnClicked() ) {
....
}
} -
크리미걸
이런식으로 하면 첨에 실행할때마다 그려지네요 ㅡㅜ 버튼클릭할때마다 그려지게 할려면 어떻게 하나요;;
-
영빈이
프란 // ㅋㅋ. ^^ 치안이 확실한 코드인이군요. ㅎㅎ ^^
-
Creator
(' 찬님 대략 그렇게... 맞을듯 ㅋㅋ;;; ( 야근중에 심심해서 사이트 순찰중입니다 ㅋㅋ)
-
나슬
대략.. 이렇게?
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img.getImage(), 0, 0, this.getSize().widt.... );
Color oldColor = g.getColor();
g.setColor(Color.RED);
g.fillRect(440, 295, 95, 20);
g.setColor(oldColor);
}
뭐 대략 이렇게?