프로그래밍/Java

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

K_Coder 2011. 11. 17. 13:03

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

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

그 전에, 몇가지만 알아보자. 자바에서 그래픽쪽 관련된게, 기본(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를 주로 이용해야 하는 것 같다.