当前页面: 开发资料首页 → 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");