본문 바로가기
과거 콘텐츠/Java

[자바] 간단하지만 헛갈리는 이상한 것들? (계속 추가 중)

by 머니지니87 2011. 11. 17.
반응형

버튼의 이름 바꾸는 방법. (버튼 이름 바꾸기)

버튼 이름을 바꾸고 싶었는데, 어떤게 버튼 이름에 대한건지 몰라서 많이 허덕였다.- -;;

그 전에, 몇가지만 알아보자. 자바에서 그래픽쪽 관련된게, 기본(awt) 과 J가 붙은 것(swing)들이 있다.

사실 큰 차이는 잘 못느끼고, awt로 만든 경우 해당 프로그램을 보는 컴퓨터의 O/S에 따라 화면이 조금씩 달라지게되는데
Swing으로 작성한 경우 통일 시켜서 어떤 O/S 에서든 동일한 화면을 보여준다고 한다.

버튼 할꺼니까, 버튼만 살짝 비교하면서 보자.



이게 awt 의 Button을 사용하는 모습. import에서 awt의 Button을 하고 있다.


버튼의 이름이 찾는데 고생을 좀 했는데. 눈에 띄는게 getName()이라 해봤더니 다른게 나왔다 - -;;
내가 생각하는 Name의 기준과 자바에서의 기준이 다른듯 싶다.

그리고 배운게 getActionCommand(). 내가 입력한 이름이 잘 나온다.
보니까 액션 이벤트에서도 이놈을 사용하고 있었다.
e.getActionCommand()   아마 액션리스너에서 종종 볼 수 있을 것이다.

문제는. 이놈을 내가 원하는 내용을 잘 뽑아 내길래 당연히 set을 이용해서 바꿨다.
setActionCommand()가 있음에도 에러도 아니고 아무 이상없이 잘 돌아가지만 변경되진 않았다..- -;

그래서 setLabel()을 사용했더니 잘 바뀌었다.
버튼에 보이는 이름은 Label 이다.


ActionCommand는 단지 같은 값을 가지고 있었을 뿐. - -;


추가적인 내용.

Label 을 변경하면 getActionCommand() 값도 같이 변경된다. 위의 내용을 봤을 때 당연한거 같지만
중요한 사실이 있다. setActionComman()의 값을 변경한다 해도, Label의 값이 변경되진 않는다.

Label 변경시. Label과 ActionCommand의 값이 모두 변경.
Action변경시. ActionCommand만 값이 변경.

게다가, setActionCommand로 값을 한번 설정하면, 그 이후로는 Label을 변경해도
ActionCommand의 값이 변경되지 않는다. 설정된 값이 없는 경우 Label의 값을 사용하고,
설정이 되면 Label의 값 보다 설정된 값이 우선 시 되는 것 같다.

사실, ActionCommand가 정확히 어떤 동작을 하거나, 무엇인지에 대해 몰라서 발생하는 내용이긴 하다.






JButton을 사용한 모습. import에서 javax 이며 swing의 Button을 가져오고 있다.


awt와 별 차이는 없었지만, 몇가지 추가적인 것들이 있는거 같다.
눈에 띄는 하나만 더 추가했는데. getText가 있다. label과 같은 기능을 하고 있으며,
그림에서 보이듯이 getLabel에 이상한 줄으 그어져 있는데, 실행이 되긴 한다.

다만, Text를 주로 이용해야 하는 것 같다.
반응형