⑴ 请教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外接显示器显卡过低,运行较大游戏或者开启了比较华丽的桌面效果,然后频繁切换桌面就可能产生显示器驱动程序停止响应故障。