📄 chatwindow.java
字号:
/*
* Copyright (c) 2001 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Sun Microsystems, Inc. for Project JXTA."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact Project JXTA at http://www.jxta.org.
*
* 5. Products derived from this software may not be called "JXTA",
* nor may "JXTA" appear in their name, without prior written
* permission of Sun.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL SUN MICROSYSTEMS OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of Project JXTA. For more
* information on Project JXTA, please see <http://www.jxta.org/>.
*
* This license is based on the BSD license adopted by the Apache Foundation.
*
* $Id: ChatWindow.java,v 1.3 2006/02/21 13:57:50 benzht Exp $
*
*/
package net.jxta.jxtaview;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.jxta.protocol.PeerGroupAdvertisement;
import net.jxta.protocol.PeerAdvertisement;
/*
* ChatWindow: Instant Messaging for JxtaView.
*
*/
public class ChatWindow extends JPanel implements ActionListener {
// Class encapsulating the peer-2-peer networking protocols.
// It's either JXTA or a JXTA simulation, depending on how the
// demo is launched.
//
P2PFace p2p;
// We're chatting with this guy, in this group.
PeerAdvertisement peer;
PeerGroupAdvertisement group;
// On-screen controls.
JFrame frame;
TextArea conversation;
TextField inputLine;
public ChatWindow(P2PFace p2p,
PeerGroupAdvertisement group,
PeerAdvertisement peer) {
this.p2p = p2p;
this.group = group;
this.peer = peer;
// Component layout management.
GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(10, 10, 0, 10); // Top, left, bottom, right
// Conversation: listing of the chat so far.
String msg = "Now chatting with " + peer.getName() + ", in the peergroup " +
group.getName() + ". Type your message in the box below, and " +
"press <Enter> to send.\n\n";
conversation = new TextArea(msg, 15, 50, TextArea.SCROLLBARS_VERTICAL_ONLY);
conversation.setEditable(false);
add(conversation);
gbl.setConstraints(conversation, gbc);
// Input text area, for new chat message to send.
inputLine = new TextField(50);
inputLine.addActionListener(this);
add(inputLine);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.insets = new Insets(10, 10, 10, 10); // Top, left, bottom, right
gbl.setConstraints(inputLine, gbc);
// Chat window frame.
String title = "JxtaView Instant Messaging - " + peer.getName();
frame = new JFrame(title);
frame.getContentPane().add("Center", this);
frame.setLocation(150, 50);
frame.pack();
frame.setVisible(true);
}
/**
* Called when user presses <Enter> in the inputLine field.
* @param evt the triggering ActionEvent
*/
public void actionPerformed(ActionEvent evt) {
String message = inputLine.getText();
conversation.append(p2p.getMyPeerName() + "> " + message + "\n");
inputLine.setText("");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -