나는 호출 될 때 네트워크를 통해 전송되는 모든 트래픽을 수신하고 해당 트래픽에 대한 정보를 콘솔에 출력하는 Java 메소드를 사용합니다. 내 프로그램은 현재 콘솔에서 실행되지만 사용자가 프로그램과 상호 작용할 수 있도록 그래픽 사용자 인터페이스를 만드는 방법을 모색 중입니다.자바 - 호출되는 메소드를 중지하려면 어떻게해야합니까?
현재 내 프로그램을 실행할 때 콘솔이 실행되는 동안 네트워크 트래픽에 대한 명령문이 지속적으로 인쇄되며 실행을 중지해야하는 유일한 방법은 다음과 같은 '종료'버튼을 클릭하는 것입니다. Eclipse 콘솔 창.
그러나 그래픽 사용자 인터페이스를 사용하면 사용자가 네트워크에서 트래픽을 수신하기 위해 클릭 할 수있는 '시작'버튼이 있습니다.하지만 일단 수신을 시작하면 나는 아무 것도 할 수 없습니다. 사용자가 GUI를 통해 중지 할 수 있습니다.
네트워크를 통해 정보가 전송되기 때문에 전화를 끊기위한 정보가 수신되지 않을 때까지 기다릴 수 없습니다. 전화를 끊을 '중지'버튼을 추가하는 것이 좋습니다. 방법 (즉, 내 프로그램이 네트워크 트래픽을 수신하는 것을 막을 수는 있지만) 첫 번째 방법을 듣지 못하게하려면 어떤 메소드를 작성/호출해야하는지 모르겠다.
내 '시작'버튼의 경우 버튼을 클릭하는 것을 듣고 다른 클래스의 메서드를 듣는 경우 ActionListener
이 있습니다. 내가 '중지'버튼을 만들 수 있지만, 내가 무엇을 해야할지 모르겠어요. ActionListener
이 클릭을 듣고 첫 번째 메소드가 호출되는 것을 막을 때 호출 할 메소드입니다.
누구든지 의견이 있으십니까? 14시 15분
이 @
편집 28/04/2014 내가 '정지'버튼을 만드는 데 사용하고있는 코드입니다 :
JButton stopCaptureButton = new JButton("Stop");
panel.add(stopCaptureButton);
stopCaptureButton.setBounds(875, 350, 80, 30);
stopCaptureButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
EspduReceiver.stopCapture = true;
pool.shutdown();
}
});
을하지만 어떤 이유로, 절대적으로 아무것도 내가 그것을 클릭하면 발생합니다 ...
이 메서드의 시작 부분에 나는이 메서드를 시작할 때 while(true){...
, 그 다음에 th가 있습니다. 네트워크를 통해 전송되는 정보를 캡처하는 전자 코드. receivePdu()
방법의 끝에
Boolean queryStopCapture = stopCapture;
if(queryStopCapture == true){
break;
}
가변 stopCapture
은 라인과 receivePdu()
방법과 동일 클래스에 정의 된 전역 변수이다 public static Boolean stopCapture = false;'
볼 수 있듯이 stopCaptureButton
에서 클릭이 감지되면 stopCapture
의 값을 true
으로 설정하고 receivePdu()
끝 부분에서 break;
을 트리거해야합니다. 방법,하지만 그렇게하지 않는 것 같습니다.
왜 그런가? 아니면 내가 뭘 잘못하고있는거야?
시도한 코드를 보여주기 위해 편집 된 질문입니다. – someone2088