JAVA SWT Label update 방법(자동 크기 조절)
Label myLabel=new Label(~~~)
대충 위치를 정해주고
myLabel.setLocation(20,20);
값을 넣었다.
myLabel.setText("abc");
그리고 팩!(자동 사이즈 맞춤)
myLabel.pack();
자 이렇게까지 하고 실행하면 (20,20)의 위치에 abc가 잘 들어가있다.
이 상황에서
프로그램 실행중에 내가 myLabel이 표시하는 값을 defgh 로 바꾸려고 했다.
C# 같은 경우에는, 그냥 myLabel.text=~~~~ 로 바꿔주면
바로 업데이트가 되서 바뀌는데...............
자바 SWT는 안바뀐다 안바껴 망할 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
바뀐것 같긴 한데 짤려나온다.
처음에 라벨의 크기를 abc 로 해놔서 라벨의 크기가 abc에 꼭 맞게 되어버린것..
내가 defgh를 넣으면 def 까지만 보인다 ㅜㅜㅜㅜㅜㅜㅜㅜ
myLabel.redraw(); 도 해보고
myLabel.update(); 도 해보고
shell.layout();
shell.update();
별별걸 다해봤는데 하나도 안먹힘
<그래서 여러번의 삽질끝에 알아낸 방법>
1. 라벨 사이즈를 재설정해준다
myLabel.setText("defgh");
Point size = myLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT);
myLabel.setSize(size.x, size.y);
오오 된다..
2. 위의 삽질을 하다보니 문득 생각난것..
아니 그럼 애초에 라벨 사이즈를 abc 에 맞춰서 pack() 안하면 되는거 아냐..?
하고 진짜 저기 위에 myLabel.pack() 없애고 했더니 잘됨 ㅡㅡ
아 ㅡㅡ....
근데 pack()을 호출하지 않으면 저 라벨 컴포넌트가 차지하는 스페이스가 넓어질 것이고
초기에 얼마나 차지하는지 잘 모르겠으므로.... 안정성을 위해
급한 경우 아니면 첫번째 방법을 추천한다.
+ 하지만 난 급한 경우였는데 삽질만함 ㅜㅜ
구글링 해도 안나오고 ㅣㅏㅇ머리ㅏ얼민ㅇ러;ㅣ
댓글남기기