站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题聊天程序,如何打中文字体?

聊天程序,如何打中文字体?

摘要: 聊天程序,如何打中文字体?


写个一个类似于qq聊天程序,但是只能相互间写中文,不知如何实现中文字体的输入。


把默认的字符编码iso8859-1的 转成gb2312的就行了


能说得具体点吗 ?谢谢


能否把代码也贴上?


public class Chat extends JFrame implements ActionListener, KeyListener,
Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;

JTextArea txtRecord;

JComboBox jcbName;

JTextField txtMesg;

JButton jbSend;

/**
* jpDraw
*/
JButton jbDraw;

/**
* jptestDraw
*/
JButton testDraw;

JPanel p;

Socket sc;

String s;

OutputStreamWriter osw;

PrintWriter pw;

InputStreamReader isr;

BufferedReader br;

public Chat(String username) {
txtRecord = new JTextArea(10,10);

txtRecord.setEditable(false);

jcbName = new JComboBox();
txtMesg = new JTextField(20);
jbSend = new JButton("Send");

/**
* jbDraw
*/
jbDraw = new JButton("Draw");

/**
*
*/
testDraw = new JButton("testDraw");
p = new JPanel();
s = username;

p.add(jcbName);
p.add(txtMesg);
p.add(jbSend);

/**
* jbDraw
*/
p.add(jbDraw);

/**
*
*/
p.add(testDraw);

jbSend.addActionListener(this);

/**
* jbDraw
*/
jbDraw.addActionListener(this);

/**
*
*/
testDraw.addActionListener(this);

txtMesg.addKeyListener(this);

this.getContentPane().add(new JScrollPane(txtRecord));
this.getContentPane().add(p, BorderLayout.SOUTH);
this.setTitle("NAME:"+s);
this.setSize(400, 300);

/**
* make the window to pack;
*/
this.pack();

this.setVisible(true);


txtMesg.requestFocus();

try {
sc = new Socket("127.0.0.1", 8888);
osw = new OutputStreamWriter(sc.getOutputStream());
pw = new PrintWriter(osw, true);
pw.println(username);
} catch (Exception ex) {
ex.printStackTrace();
}

Thread t = new Thread(this);
t.start();

//-----------------------add----------------
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//--------------------------------------------
}

public void actionPerformed(ActionEvent e) {
if (!txtMesg.getText().equals("")) {
pw.println(s + "to" + jcbName.getSelectedItem() + "Message:"
+ txtMesg.getText());

txtMesg.setText("");
txtMesg.requestFocus();
}

/**
* to the window of draw
*/
if (e.getSource() == jbDraw) {

new Draw(s);
this.dispose();

}

/**
*
*/
if(e.getSource()== testDraw) {
new testDraw();
this.dispose();
}
}

public void keyPressed(KeyEvent e) {

}

public void keyReleased(KeyEvent e) {
if (e.getSource() == txtMesg && e.getKeyCode() == KeyEvent.VK_ENTER) {
if (!txtMesg.getText().equals("")) {
pw.println(s + "to" + jcbName.getSelectedItem() + "Message:"
+ txtMesg.getText());
txtMesg.setText("");
txtMesg.requestFocus();
}
}
}

public void keyTyped(KeyEvent e) {

}

public void run() {
try {
while (true) {
isr = new InputStreamReader(sc.getInputStream());
br = new BufferedReader(isr);
String st;
String str[] = new String[2];
while ((st = br.readLine()) != null) {
str = st.split("%%%");
if (str[0].equals("new")) {
txtRecord.append(str[1] + "-onLine/n");
jcbName.addItem(str[1]);
} else if (str[0].equals("chat")) {
txtRecord.append(str[1] + "/n");
}
}
}
} catch (Exception ex) {
}
}
}


把isr = new InputStreamReader(sc.getInputStream());改成
isr = new InputStreamReader(sc.getInputStream(),"gb2312");看行不行。


同样把把osw = new OutputStreamWriter(sc.getOutputStream());改成
osw = new OutputStreamWriter(sc.getOutputStream(),"gb2312");


↑返回目录
前一篇: 照书上原样写的怎么会出错呢?
后一篇: 大家有办法 把一个类加载之后 再输出成一个文件保存在硬盘里吗?