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

📄 mainframe.java

📁 《透视Java》的源码
💻 JAVA
字号:
package covertjava.chat;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * <p>Main window of Chat</p> * <p>Copyright: Copyright (c) 2004 Sams Publishing</p> * @author Alex Kalinovsky * @version 1.0 */public class MainFrame extends JFrame implements ActionListener, MessageListener {    JPanel contentPane;    JMenuBar menuBar = new JMenuBar();    JMenu menuFile = new JMenu();    JMenuItem menuFileExit = new JMenuItem();    JMenu jMenuHelp = new JMenu();    JMenuItem menuHelpAbout = new JMenuItem();    JToolBar toolBar = new JToolBar();    JButton btnSend = new JButton();    JButton btnHelp = new JButton();    ImageIcon imageSend;    ImageIcon imageHelp;    JLabel statusBar = new JLabel();    BorderLayout borderLayout = new BorderLayout();    JSplitPane splitPane = new JSplitPane();    JMenuItem menuEditSend = new JMenuItem();    JComboBox cmbhostName = new JComboBox();    JLabel lblhostName = new JLabel();    Component filler;    JScrollPane scrollPaneTop = new JScrollPane();    JScrollPane scrollPaneBottom = new JScrollPane();    JTextArea txtMessage = new JTextArea();    JEditorPane txtConversation = new JEditorPane();    StringBuffer conversation = new StringBuffer(300);    /**Construct the frame*/    public MainFrame() throws Exception {        this(true);    }    public MainFrame(boolean initChatServer) throws Exception {        enableEvents(AWTEvent.WINDOW_EVENT_MASK);        this.conversation.append("<HTML><BODY>");        jbInit();        if (initChatServer == true) {            ChatServer.getInstance().init();            ChatServer.getInstance().setMessageListener(this);        }    }    /**Component initialization*/    private void jbInit() throws Exception {        imageSend = new ImageIcon(MainFrame.class.getResource("images/saturn_button.gif"));        imageHelp = new ImageIcon(MainFrame.class.getResource("images/help_button.gif"));        filler = Box.createVerticalStrut(1);        setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("images/saturn_small.jpg")));        contentPane = (JPanel) this.getContentPane();        contentPane.setLayout(borderLayout);        this.setSize(new Dimension(400, 300));        this.setTitle("Chat Application");        statusBar.setText(" ");        menuFile.setText("File");        menuFileExit.setText("Exit");        menuFileExit.addActionListener(this);        jMenuHelp.setText("Help");        menuHelpAbout.setText("About");        menuHelpAbout.addActionListener(this);        btnSend.addActionListener(this);        btnSend.setIcon(imageSend);        btnSend.setBorder(BorderFactory.createEtchedBorder());        btnSend.setMaximumSize(new Dimension(27, 27));        btnSend.setMinimumSize(new Dimension(27, 27));        btnSend.setPreferredSize(new Dimension(27, 27));        btnSend.setToolTipText("Send message");        btnHelp.setIcon(imageHelp);        btnHelp.addActionListener(this);        btnHelp.setBorder(BorderFactory.createEtchedBorder());        btnHelp.setMaximumSize(new Dimension(27, 27));        btnHelp.setMinimumSize(new Dimension(27, 27));        btnHelp.setPreferredSize(new Dimension(27, 27));        btnHelp.setToolTipText("Help");        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);        splitPane.setContinuousLayout(true);        menuEditSend.setText("Send message");        menuEditSend.addActionListener(this);        lblhostName.setText("Host Name: ");        txtMessage.setLineWrap(true);        txtMessage.addKeyListener(new KeyAdapter() {            public void keyPressed(KeyEvent e) {                if (e.getKeyCode() == KeyEvent.VK_ENTER) {                    e.consume();                    doSendMessage();                }            }        });        txtConversation.setEditable(false);        txtConversation.setContentType("text/html");        scrollPaneBottom.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);        cmbhostName.setEditable(true);        toolBar.add(lblhostName, null);        toolBar.add(cmbhostName, null);        toolBar.add(btnSend);        toolBar.add(filler, null);        toolBar.add(btnHelp);        menuFile.add(menuEditSend);        menuFile.addSeparator();        menuFile.add(menuFileExit);        jMenuHelp.add(menuHelpAbout);        menuBar.add(menuFile);        menuBar.add(jMenuHelp);        this.setJMenuBar(menuBar);        contentPane.add(toolBar, BorderLayout.NORTH);        contentPane.add(statusBar, BorderLayout.SOUTH);        contentPane.add(splitPane, BorderLayout.CENTER);        splitPane.add(scrollPaneTop, JSplitPane.TOP);        splitPane.add(scrollPaneBottom, JSplitPane.BOTTOM);        scrollPaneBottom.getViewport().add(txtMessage, null);        scrollPaneTop.getViewport().add(txtConversation, null);        splitPane.setDividerLocation(160);    }    /**File | Exit action performed*/    public void doExit(ActionEvent e) {        System.exit(0);    }    /**Help | About action performed*/    void doShowHelp() {        AboutDialog dlg = new AboutDialog(this);        Dimension dlgSize = dlg.getPreferredSize();        Dimension frmSize = getSize();        Point loc = getLocation();        dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);        dlg.setModal(true);        dlg.show();    }    /**Overridden so we can exit when window is closed*/    protected void processWindowEvent(WindowEvent e) {        super.processWindowEvent(e);        if (e.getID() == WindowEvent.WINDOW_CLOSING) {            doExit(null);        }    }    /**     * Sends a message to the specified user     */    void doSendMessage() {        try {            String host = this.cmbhostName.getEditor().getItem().toString();            String message = this.txtMessage.getText();            ChatServer.getInstance().sendMessage(host, message);            appendMessage(message, null);            this.txtMessage.setText("");        } catch (Exception x) {            x.printStackTrace();            JOptionPane.showMessageDialog(this, x.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);        }    }    /*synchronized*/ void appendMessage(String message, MessageInfo messageInfo) {        if (messageInfo == null) {            this.conversation.append("<font color=\"red\">");            this.conversation.append("You");        }        else {            this.conversation.append("<font color=\"blue\">");            this.conversation.append(messageInfo.getDisplayName());        }        this.conversation.append(": ");        this.conversation.append("</font>");        this.conversation.append(message);        this.conversation.append("<br>");        this.txtConversation.setText(this.conversation.toString() + "</BODY></HTML>");    }    /**     * Called when a new message is received     */    public void messageReceived(String message, MessageInfo messageInfo) {        appendMessage(message, messageInfo);    }    public void actionPerformed(ActionEvent event) {        if (event.getSource() == this.menuEditSend || event.getSource() == this.btnSend) {            doSendMessage();        }        else if (event.getSource() == this.menuHelpAbout || event.getSource() == this.btnHelp) {            doShowHelp();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -