⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chat.java

📁 21天学通J2EE的例子4
💻 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 + -