죄송합니다,이 자바 스윙 인터페이스에 뉴비입니다.SwingWorker는 아무것도 반환하지 않습니까? (자바)
그러나 나는 내가 따라 할 수있는 간단한 튜토리얼을 발견했다. Here Link1.
그렇다면 간단한 JFrame과 버튼을 만들었습니다. 버튼을 누를 때 일단이 코드를 수행합니다
public class Submitter extends SwingWorker<String, Void> {
public int getResult(){
return res;
}
String line = "";
String urlTarget;
int res = -1;
StringBuffer result = new StringBuffer();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
public String getLastResult(){
return result.toString();
}
public void setURL(String yourURL){
urlTarget = yourURL;
}
public void setData(List<NameValuePair> listHere){
nameValuePairs.addAll(listHere);
}
@Override
protected String doInBackground() throws Exception {
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(urlTarget);
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
post.setHeader("User-Agent", "Firefox");
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
while ((line = rd.readLine()) != null) {
result.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
@Override
protected void done() {
try {
// store the output here
String s = this.get();
res = Integer.parseInt(s);
} catch (InterruptedException ex) {
System.err.println("line 119");
} catch (ExecutionException ex) {
System.err.println("line 121" + ex.getMessage());
}
}
}
하지만 재미있는 점은 다음과 같습니다 제출자 제공자 라이선스 계약 반면
int res = -1;
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("id", jTextField1.getText()));
urlParameters.add(new BasicNameValuePair("pass", jTextField2.getText()));
Submitter m = new Submitter();
m.setData(urlParameters);
m.setURL(url1);
m.execute(); System.out.println(m.getResult);
을 실제로 하나입니다. 버튼을 누르기 만하면 호출되는 SwingWorker는 결코 처리되지 않습니다. 왜 출력이 전혀 없습니까? 나는 이미 거기에 System.out.println() -> 넣어 생각. CMIIW.
['cancel'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#cancel%28boolean%29) 'SwingWorker '어떤 출력을 볼 수 있습니다. –
스윙 워커를 취소 하시겠습니까? 왜 ? 나는 그것이 나를 이해하게하지 않는다는 것을 의미한다. 먼저 EXECUTE, 갑자기 취소합니까? – gumuruh
이 특정 코드는 취소 될 때까지 무한 루프됩니다. 그건 당신이 보통'SwingWorker'를 작성하는 방법이 아니지만 왜 출력이 보이지 않는지 설명합니다. 또는'while' 루프 내에서 일부 작업을 수행하고 결과적으로 문자열 결과를 반환합니다. –