【发布时间】:2014-08-11 08:41:50
【问题描述】:
您好,我正在开发简单的客户端服务器应用程序,其中客户端可以使用文本绘制图片和聊天,按下按钮时发送文本,并且我想以相同的方式发送名为 ColorPointSize 的对象列表,它指的是列表然后在面板上绘制的点、颜色和点的大小。我可以像通过 PrintWriter 发送字符串一样简单地做到这一点,还是应该将它们转换为 toString(),然后以某种方式将其转换回 ColorPointSize 或使用序列化,但我真的不知道该怎么做我是初学者到Java,我感到困惑。
以下是部分代码: 向服务器发送消息
private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String nothing = "";
if ((inputTextArea.getText()).equals(nothing)) {
inputTextArea.setText("");
inputTextArea.requestFocus();
} else {
try {
writer.println(username + ":" + inputTextArea.getText() + ":" + "Chat");
// here i want to send also an object of type shall i do it via changing toString() and then somehow converting it or what ???
Date now = new Date();
String temp=inputTextArea.getText();
s_archiwum="\n"+s_archiwum+"\n"+now+" "+temp+"\n";
writer.flush(); // flushes the buffer
} catch (Exception ex) {
chatTextArea.append("Message was not sent. \n");
}
inputTextArea.setText("");
inputTextArea.requestFocus();
}
inputTextArea.setText("");
inputTextArea.requestFocus();
}
将连接用户的名称添加到在线用户列表我想以类似的方式添加 ColorPointSize。
public void userAdd(String data) {
String message, add = ": :Connect", done = "Server: :Done", name = data;
outputPane.append("Before " + name + " added. \n");
onlineUsers.add(name);
outputPane.append("After " + name + " added. \n");
String[] tempList = new String[(onlineUsers.size())];
onlineUsers.toArray(tempList);
for (String token : tempList) {
message = (token + add);
tellEveryone(message);
}
tellEveryone(done);
}
绘制方法:(cps是ColorPointSize类型的对象列表)
private void drawRoundRectangles(Graphics2D g2d) {
int x, y, x2, y2;
synchronized (cps) {
for (ColorPointSize p : cps) {
g2d.setColor(p.color);
x = (int) p.getX();
y = (int) p.getY();
x2 = (int) p.getX() - 1;
y2 = (int) p.getY() - 1;
g2d.drawLine(x, y, x2, y2);
g2d.fillRoundRect(x, y, p.size, p.size, p.size, p.size);
g2d.drawLine(x, y, x2, y2); // connectin' points wit' line
}
}
}
ColorPointSize 类(以防万一)
package paintalk;
import java.awt.Color;
import java.awt.Point;
public class ColorPointSize {
public Color color;
public Point point;
public int size;
public ColorPointSize(Color c, Point p, int s) {
this.color = c;
this.point = p;
this.size = s;
}
ColorPointSize(Point p) {
this.point = p;
}
double getX() {
return point.getX();
}
double getY() {
return point.getY();
}
}
【问题讨论】:
标签: java client-server draw send