2014-01-29 3 views
0

이 함수가 있는데 단추를 클릭 할 때 값을 반환하고 싶습니다. 작동하지 않는다는 것을 알고 있지만 어떻게 해결합니까? 나는 이미 그것에 대해 봤지만 관련있는 것을 찾지 못했습니다.액션 리스너의 반환 값

내 코드 :

public String OutputText() 
{ 
    layout.show(mainpanel, "PANEL"); 
    testbutton.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent arg0) 
     { 
      return textfield.getText(); 
     } 
    }); 
} 
+0

가 왜 함수가 값을 반환하려면? – sanbhat

+0

'returned'값을 사용하여 원하는 것은 무엇입니까? – kmera

+0

이렇게 작동합니다 : 'system.out.println (OutputText()); 예 : :) –

답변

0

당신은 actionPerformed()에서 값을 반환 할 수 없습니다 심지어 당신이 할 수 있다면, 그것은 당신의 OutputText() 메소드에 의해 반환 무슨 영향을 미치지 않을 것이다. OutputText()을 실행하면 ActionListener이 단추에 추가되지만 단추를 누를 때만 메서드가 비동기 적으로 호출됩니다. 그렇기 때문에 OutputText()actionPerformed()이 호출 될 때까지 오랜 시간이 걸릴 수 있습니다.

텍스트 필드에 쓰여진 내용을 표시하려면 System.out.println(textfield.getText())actionPerformed() 메서드 안에 넣을 수 있습니다.

0

void 메서드에서 값을 반환 할 수 없습니다. 그러나 인쇄물을 인쇄 할 수는 있습니다. 또는 값을 반환하는 Method를 호출 할 수 있습니다. 예 :

public String returnStringValue(){ 
return textfield.getText(); 
} 
public void actionPerformed(ActionEvent arg0) { 

lblAnotherlabel.setText(returnStringValue); 
    } 

하지만이 모든 것을 직접 수행 할 수 있다면 어떻게해야합니까?

0

당신은 콜백 방법을 사용하고 콜백 인터페이스에 반환 값을 전달할 수 있습니다

public class TestCallBack { 
    JButton testbutton; 

String value; 

public interface Callback { 
    void setResult(String result); 

} 

public class MyCallBack implements Callback { 
    @Override 
    public void setResult(String result) { 
     value = result; 
    } 
} 

public static abstract class MyActionListener implements ActionListener { 
    private Callback callback; 

    public MyActionListener(Callback callback) { 
     this.callback = callback; 
    } 

} 

public String OutputText() { 
    layout.show(mainpanel, "PANEL"); 

    testbutton.addActionListener(new MyActionListener(new MyCallBack() 

    ) { 
     public void actionPerformed(ActionEvent arg0) { 

      this.callback.setResult(textfield.getText()); 


     } 
    }); 
} 

가}