?? chat.java
字號:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.border.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class Chat extends JFrame implements ActionListener, ChatDisplay
{
public static void main(String[] args) {
if (args.length!=0 && args.length!=1) {
System.err.println("Usage: Chat [ JMSTopic ]");
System.exit(1);
}
final Chat window = new Chat(args.length==1?args[0]:null);
try {
window.addWindowListener(new WindowAdapter() {
public void windowClosing( WindowEvent ev) {
window.shutdown();
window.dispose();
System.exit(0);
}
});
window.pack();
window.setVisible(true);
}
catch (Exception ex) {
System.err.println(ex);
window.dispose();
System.exit(1);
}
}
private TopicServer server;
private JTextField name = new JTextField("Anonymous");
private JTextArea message = new JTextArea(3,40);
private JTextArea board = new JTextArea(20,60);
private JButton sendButton = new JButton("Send");
private StringBuffer buffer = new StringBuffer();
public Chat(String JMSTopic) {
super ("JMS Chat Client");
try {
server = new TopicServer(this,JMSTopic);
Container cp = getContentPane();
Box b = Box.createHorizontalBox();
JPanel p = boxPanel("From");
p.add(name);
b.add(p);
p = boxPanel("Message");
p.add(new JScrollPane(message));
p.add(sendButton);
b.add (p);
cp.add(b,BorderLayout.NORTH);
p = boxPanel("Bulletin Board");
p.add(new JScrollPane(board));
cp.add(p,BorderLayout.CENTER);
message.setLineWrap(true);
board.setLineWrap(true);
board.setEnabled(false);
sendButton.addActionListener(this);
}
catch (Exception ex) {
ex.printStackTrace();
error("Chat client constructor",ex.toString());
dispose();
System.exit(1);
}
}
public void actionPerformed(ActionEvent ev) {
try {
Object o = ev.getSource();
if (o==sendButton || o==message) {
server.send(name.getText(),message.getText());
message.setText("");
}
}
catch (Exception ex) {
error("actionPerformed",ex.toString());
ex.printStackTrace();
}
}
public void addMessage (String from, String message) {
System.out.println(from+":"+message);
buffer.append("\nFrom : ");
buffer.append(from);
buffer.append("\nMessage:\n");
buffer.append(message);
buffer.append("\n\n");
board.setText(buffer.toString());
}
public void shutdown() {
server.shutdown();
server = null;
sendButton.setEnabled(false);
}
public void error (String title, String message) {
JOptionPane.showMessageDialog(this,message,title,JOptionPane.ERROR_MESSAGE);
}
private JPanel boxPanel(String name) {
JPanel p = new JPanel();
Border border = BorderFactory.createEtchedBorder();
border = BorderFactory.createTitledBorder(border,name);
//p.setLayout (new BoxLayout(p,BoxLayout.X_AXIS));
p.setBorder(border);
return p;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -