repaint와 퍼블릭 전역변수???
달님
안녕하세요.
아래와 같이 position이라는 변수를 퍼블릭으로 잡고
public int position= 0; A
public void setPosition(int i){
this.position = i;
}
public int getPosition(){
return this.position;
}
get/ set매소드를 만들어 놓았습니다.그리고, get/setPosition()으로 position에 조건에 만족하는 i값을 넣었습니다.
for(int i=0; i6; i++){ //화면 재구성 B
if(alpha[i]!=0.0){
setPosition(i);
conclusion_canvas[getPosition()].repaint();
}
}
그 뒤에 conclusion_canvas[]를 repaint()를 해주었습니다.
아래는 리페인트 대상입니다.
C
public void paint(Graphics g){
:
:
g.drawLine(15, (int) (-44.0*(alpha[getPosition()])+59.0), 360, (int) (-44.0*(alpha[getPosition()])+59.0));
:
:
}
여기서 퍼블릭으로 되어 있는 position값을 getPosition()으로 가져와서 적용하려고 하면
제 예상과 다르게B 에서 조건에 맞는 i를 바로 position에 저장하고 그 값으로 캔버스를
리페인트 시키려 했는데 조건에 만족하는 i의 값중에 제일 마지막 값만이C에서position
에 저장이 되어 그림이 갱신됩니다.예를 들면
B에서의 조건에 만족하는 i의 값이 1, 2, 3, 4, 5 였고, 그값을 바로바로 position에
저장하였으므로, 그 때 그 때repaint()되어 총 5번 되어야 하는데,
C에서는 position값이 5로 되어버려 5라는 값으로 5번되어 버립니다.
1,2,3,4,5로 되어야 하는데 5, 5, 5, 5, 5 로 되어 버리네요.
다른 예를 들면, 2, 4, 6, 8이라면 8, 8, 8, 8 이렇게 position이 값이 됩니다.
도와주세요. T_T
-
중독된 2023-08-31
\conclusion_canvas[] 에 담겨저 있는 각각의 컴퍼넌트들이 동일한 position 인스턴스를 쓰고 있는게 아닐런지\ 안녕하세요. ^^ 이해가 잘 안됩니다. 죄송하지만 조금만 더 알려주세요. t_t
-
이하얀 2023-08-31
conclusion_canvas[] 에 담겨저 있는 각각의 컴퍼넌트들이 동일한 position 인스턴스를 쓰고 있는게 아닐런지...
-
예그리나 2023-08-31
awt 와 applet 의 paint, repaint 메소드는 호출된다고 해서 바로 paint 되는게 아닙니다. jvm 이 알아서 paint 하는 시점을 결정하게 됩니다.
쉽게 확인할수 있는게, 실행 창을 다른창으로&nbs