2012-11-06 2 views
1

SWING을 사용하여 GUI를 만들고 있습니다. 일부 단추에는 사용자 지정 작업이 첨부되어 있습니다.사용자 지정 작업을 사용하는 동안 단추 텍스트의 중복을 피하는 방법

JButton btn = new JButton(text); 
btn.setAction(new MyAction()); 

내 액션 클래스 생성자가 수행합니다 : 같은 내 코드 보인다

super(text) //set the label of the button 

내 질문은 : 그것은합니다 (텍스트) 두 번, 어떻게 동일한 매개 변수를 반복 나에게 잘못 보이기 때문에 이걸 처리해야합니까? 텍스트가없는 버튼을 만들고 액션이 텍스트를 설정하도록하십시오 (아마도 생성자 매개 변수로)? 무엇이 올바른 처리하는 방법은 무엇입니까? 감사합니다.

+0

무엇을 묻고 계십니까? 'Action'을'JButton'의 모델로 설정하면'JButton' 텍스트가'Action'의 이름과 일치하도록 조정됩니다. 그래서 두 번 텍스트를 반복해야하는 이유가 보이지 않습니다. – Robin

+0

'JButton btn = new JButton (new MyAction()); '또는 메뉴 항목 인'Action action = new MyAction(); JButton btn = 새 JButton (작업); menu.add (action); ' –

+0

나는 그것을하기위한 가장 우아하고 명확한 방법을 요구하고 있었다. 기본적으로 Andrew가 말한 것입니다. – Enoon

답변

2

name을 포함하는 AbstractAction(String name) 생성자를 사용하십시오. 몇 가지 예가 here입니다.

부록 : @MadProgrammer가 말한대로 Action.NAMEputValue()에 대해 key을 사용할 수 있습니다. 이 관련 example은 다른 속성에 대해 putValue()을 보여줍니다.

+1

'새로운 JButton (new MyAction (text))'을 사용하거나'Action # NAME' 속성을 사용하십시오 – MadProgrammer

관련 문제