62,634
社区成员




updateUsersButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
UpdateUsersWorker updateUsersWorker = new UpdateUsersWorker(in, out, dlm);
updateUsersWorker.execute();
}
});
@SuppressWarnings("rawtypes")
public class UpdateUsersWorker extends SwingWorker<DefaultListModel, String> {
private BufferedReader in;
private PrintWriter out;
private DefaultListModel dlm;
public UpdateUsersWorker(BufferedReader in, PrintWriter out, DefaultListModel dlm) {
this.in = in;
this.out = out;
this.dlm = dlm;
}
@SuppressWarnings("unchecked")
@Override
protected DefaultListModel doInBackground() throws Exception {
System.out.println(getState());
out.println("12");//向服务器发送12号功能请求
dlm.clear();//清空原有数据
String line = null;
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}//用一个临时变量存储readLine的返回值
while ((!line.equals("END")) && (line != null)) {//String的比较:用equals方法!!!
dlm.addElement(line);
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return dlm;
}
@Override
protected void done() {
System.out.println(getState());
}
}
updateUsersButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dlm.clear();
new UpdateUsersWorker(in, out, dlm).execute();
}
});
@SuppressWarnings("rawtypes")
public class UpdateUsersWorker extends SwingWorker<DefaultListModel, String> {
private BufferedReader in;
private PrintWriter out;
private DefaultListModel dlm;
public UpdateUsersWorker(BufferedReader in, PrintWriter out, DefaultListModel dlm) {
this.in = in;
this.out = out;
this.dlm = dlm;
}
@SuppressWarnings("unchecked")
@Override
protected DefaultListModel doInBackground() throws Exception {
System.out.println(getState());
out.println("12");//向服务器发送12号功能请求
//dlm.clear();//清空原有数据
String line = null;
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}//用一个临时变量存储readLine的返回值
while ((!line.equals("END")) && (line != null)) {//String的比较:用equals方法!!!
//dlm.addElement(line);
addLine(line);
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return dlm;
}
private void addLine(final String line) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
dlm.addElement(line);
}
});
}
@Override
protected void done() {
System.out.println(getState());
}
}
@SuppressWarnings("rawtypes")
public class UpdateUsersWorker extends SwingWorker<DefaultListModel, String> {
private BufferedReader in;
private PrintWriter out;
private DefaultListModel dlm;
public UpdateUsersWorker(BufferedReader in, PrintWriter out, DefaultListModel dlm) {
this.in = in;
this.out = out;
this.dlm = dlm;
}
@SuppressWarnings("unchecked")
@Override
protected DefaultListModel doInBackground() throws Exception {
System.out.println(getState());
out.println("12");//向服务器发送12号功能请求
dlm.clear();//清空原有数据
String line = null;
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}//用一个临时变量存储readLine的返回值
while ((!line.equals("END")) && (line != null)) {//String的比较:用equals方法!!!
dlm.addElement(line);
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return dlm;
}
@Override
protected void done() {
System.out.println(getState());
}
}
package gui_sockect_weibo_client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
@SuppressWarnings("rawtypes")
public class UpdateUsersWorker extends SwingWorker<DefaultListModel, String> {
private BufferedReader in;
private PrintWriter out;
private DefaultListModel dlm;
private JList usersList;
public UpdateUsersWorker(BufferedReader in, PrintWriter out, DefaultListModel dlm, JList usersList) {
this.in = in;
this.out = out;
this.dlm = dlm;
this.usersList = usersList;
}
@SuppressWarnings("unchecked")
@Override
protected DefaultListModel doInBackground() throws Exception {
System.out.println(getState());
out.println("12");//向服务器发送12号功能请求
// SwingUtilities.invokeLater(new Runnable() {//EDT!!!
// @Override
// public void run() {
// dlm.clear();//清空原有数据
// }
// });
String line = null;//用一个临时变量存储readLine的返回值
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
ArrayList<String> toPublishList = new ArrayList<String>();
while ((!line.equals("END")) && (line != null)) {//String的比较:用equals方法!!!
// dlm.addElement(line);
// publish(line);
toPublishList.add(line);
try {
line = in.readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
}
String[] toPublishArray = new String[toPublishList.size()];
toPublishList.toArray(toPublishArray);
publish(toPublishArray);
return dlm;
}
@SuppressWarnings("unchecked")
@Override
protected void process(List<String> chunks) {
dlm.clear();//清空原有数据
for (String string : chunks) {
dlm.addElement(string);
}
} @Override
protected void done() {
System.out.println(getState());
usersList.repaint();
usersList.revalidate();
usersList.updateUI();
}
}
请问:
1、现在我再去调试,暂时没有发现异常和界面更新产生的空白现象。但是我不知道是否还会出现原来的异常和空白,我觉得代码这次应该没问题了,您觉得呢?
2、这个问题与这篇帖子http://bbs.csdn.net/topics/80273103有关系吗?谢谢!