2012-10-16 2 views
1

나는 3 JTextField을 사용하는 사용자로부터 3 개의 값을 취하고 차트와 기타 그래프에 대해 하나씩 두 개의 버튼이있는 간단한 프로그램을 작성합니다.JTextField에서 buttonclick 이벤트에 대한 값 가져 오기

이 단추 중 하나를 클릭하면 인터페이스에서 가져온 값이 호출 기능으로 반환되어야합니다. 제가 textfield1.getText() 함수 내부 사용한이를 위해 (즉, I는 컨트롤러에서보기를 호출하고 사용자 관점에서의 값을 취하고 제어기 다시 기대 AM) :

Button1.addActionListener(new ActionListener() { 
    //Overriding function over here for getting the data 
}); 

이벤트. 마지막에는 사용자가 가져온 값 중 ArrayList을 다시 계산합니다.

그러나이 문제는 프로그램 실행을 시작하자마자 버튼 클릭을 기다리지 않고 기본값으로 ArrayList을 직접 컨트롤러로 반환합니다.

내가 청취자에게 매우 새로운 오전

.. 여기에 대한 신속한 도움을 주셔서 감사하고 그 문제는 정말 문제를 정확하게 파악하기 위해 몇 가지 코드를 결여

+4

포스트 [SSCCE] (http://sscce.org) 빨리 더 나은 도움을 –

답변

3

.. 문제의 원인이 될 수도 있지만 당신이 그 전화를한다고 생각하는 인상을 받고있다.

do A 
button.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
    do C 
    } 
}); 
do B 

버튼을 누를 때까지 코드 실행이 멈추게된다. 이것은 잘못되었습니다.

위의 스 니펫에서 A을 수행 한 다음 버튼에 수신기를 연결하고 바로 B으로 계속 진행합니다. 리스너 코드는 버튼을 누를 때만 트리거됩니다. 따라서 C은 버튼을 누를 때만 실행되며 B 이후입니다.

ActionListeners에 대한 자습서가 Oracle 사이트에서 제공됩니다. 소유하고있는 청취자 개념에 익숙하지 않은 경우 청취자를 부착 할 때 사용하는 디자인 패턴 인 Observer design pattern에 대해 읽는 것이 도움이 될 수 있습니다.

+0

에 대한 그냥 코드 뷰의 /// 정의 (예 : 프레임, 버튼, 필드 등의 생성을 첨부 놓쳤다. /// JB1 버튼 jb1.addActionListener 아래로 그것을 수신기를 첨가하고 (신규의 ActionListener() { @Override 공개 무효의 actionPerformed (ActionEvent의 전자) {// TODO 자동 생성 방법은, ( inputParameters.add 스터브 0, Double.parseDouble (a.getText())); inputParameters.add (1, Double.parseDouble (b.getText())); inputParameters.add e (c.getText())); 플래그 = 1; } }); return inputParameters; 그러나 이것은 액션 자체 앞에있는 값을 반환합니다. –

+0

@KunalV 정확히 내 답변에서 말하는 것입니다. 'B'는'C' 전에 실행됩니다. – Robin