抱歉,我是 Java Swing界面中的新手。
但我发现了一个我可以遵循的简单教程。 Here Link1.
然后我创建了一个简单的JFrame和一个按钮。 按下按钮后,它将执行以下代码:
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);
而提交者实际上就是这个:
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());
}
}
}
但有趣的是。一旦按下按钮就打算调用SwingWorker,它永远不会处理任何东西。为什么根本没有输出?我以为我已经把System.out.println() - &gt;在那边。 CMIIW。
答案 0 :(得分:1)
我认为您已经在教程中提供了一个字面上的示例。在现实生活中,您的SwingWorker
将在返回结果之前执行明确定义的工作。我认为本教程只是试图证明如果检查SwingWorker
标志,isCancelled()
可能会被中断。
作为练习,您可以尝试将示例调整为iteratively calculate Pi,以提高准确性。当你最终点击&#34;停止&#34;时,它可以取消工作人员并返回你当前的值。在您取消之前,循环将继续执行并完善您的答案。
答案 1 :(得分:0)
我也是一个java新手。我发现了一本很棒的java书,我免费下载了。谷歌搜索&#34; Java编程Joyce Farrell第6版pdf&#34;。我只学习了3个月的java,而且这本书帮了很多忙。