⑴ 請教java SWING 線程 阻塞的問題
swing所有的ui操作都是阻塞的抄,如果在事件處理函數中加入一個長時間無法完成的任務,那麼其他事件處理函數或者UI更新都會等待它的完成,多線程並發改變UI時很容易造成死鎖。解決辦法請參看下面的連接:
http://developer.51cto.com/art/201005/201603.htm,也就是說如果你要在新線程里完成耗時操作,並且在該線程最後改變GUI,那麼安全的做法是像下面這樣進行調用。
你的線程的run方法{
你的耗時操作。。。
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUI改變操作。。。
}
}
}
⑵ java swing通過httpclient向伺服器端發送post請求如何做
/**
*@Description:post請求遠程http鏈接
*@paramurl鏈接地址
*@parambean實體對象參數
*@paramparams多個字元串參數
*@returnjson
*@throwsException
*/
(Stringurl,Objectbean,String...params)throwsException{
System.err.println(params.length);
HttpClientclient=getHttpClient();
HttpPosthttppost=newHttpPost(url);
MultipartEntityentity=newMultipartEntity();
for(Fieldf:bean.getClass().getDeclaredFields()){
f.setAccessible(true);
if(f.get(bean)!=null&&!"".equals(f.get(bean).toString())){
entity.addPart(f.getName(),newStringBody(f.get(bean).toString(),Charset.forName("UTF-8")));
}
}
for(Fieldf:bean.getClass().getSuperclass().getDeclaredFields()){
f.setAccessible(true);
if(f.get(bean)!=null&&!"".equals(f.get(bean).toString())){
entity.addPart(f.getName(),newStringBody(f.get(bean).toString(),Charset.forName("UTF-8")));
}
}
if(params!=null&¶ms.length!=0){
Map<String,Object>paramsMap=MapTool.getParamMap(params);
for(StringparamName:paramsMap.keySet()){
entity.addPart(paramName,newStringBody((String)paramsMap.get(paramName),Charset.forName("UTF-8")));
}
}
httppost.setEntity(entity);
Stringresp=null;
try{
HttpResponseresponse=client.execute(httppost);
HttpEntityresEntity=response.getEntity();
if(resEntity!=null){
resp=EntityUtils.toString(resEntity,"UTF-8");
}
if(resEntity!=null){
EntityUtils.consume(resEntity);
}
}finally{
client.getConnectionManager().shutdown();
}
returnresp;
}
⑶ Java swing 外接顯示器 崩潰
可能是因為:
1、Javaswing外接顯卡驅動驅動過低。
2、Javaswing外接顯示器軟體與電腦存在兼容性問題。
3、Javaswing外接顯示器顯卡過低,運行較大游戲或者開啟了比較華麗的桌面效果,然後頻繁切換桌面就可能產生顯示器驅動程序停止響應故障。