📄 chatclient.java
字号:
import java.util.*;
/*
* ChatApplet.java
*
* Created on July 25, 2000, 7:37 PM
*/
/**
*
* @author Yani Ioannou
* @version 1.0
*/
public class ChatClient extends javax.swing.JApplet {
static TcpConnect connect=null;
ResourceBundle res = ResourceBundle.getBundle("Res");
boolean isStandalone = false;
static javax.swing.tree.DefaultMutableTreeNode userRoot;
static javax.swing.tree.DefaultTreeModel usrModel;
static javax.swing.tree.DefaultMutableTreeNode msgRoot;
static javax.swing.tree.DefaultTreeModel msgModel;
java.applet.AudioClip userenter;
java.applet.AudioClip userleave;
java.applet.AudioClip newmsg;
public ChatClient() {
}
public void start()
{
initComponents ();
}
private void initComponents () {
North = new javax.swing.JToolBar ();
nameText = new javax.swing.JTextField ();
serverCombo = new javax.swing.JComboBox ();
portText = new javax.swing.JTextField ();
connectButton = new javax.swing.JToggleButton ();
South = new javax.swing.JToolBar ();
messageText = new javax.swing.JTextField ();
sendButton = new javax.swing.JButton ();
SplitPane = new javax.swing.JSplitPane ();
UserScroll = new javax.swing.JScrollPane ();
userRoot = new javax.swing.tree.DefaultMutableTreeNode(res.getString("User_List"));
usrModel=new javax.swing.tree.DefaultTreeModel(userRoot);
userTree = new javax.swing.JTree(usrModel);
userTree.putClientProperty(res.getString("JTree_lineStyle"), res.getString("Angled"));
//get sounds
try{
if(isStandalone)
{
userenter=newAudioClip(getClass().getResource(res.getString("userenter_wav")));
userleave=newAudioClip(getClass().getResource(res.getString("userleave_wav")));
newmsg=newAudioClip(getClass().getResource(res.getString("newmsg_wav")));
//java.applet.AudioClip audioClip = newAudioClip(completeURL);
}else
{
userenter=getAudioClip(getClass().getResource(res.getString("userenter_wav")));
userleave=getAudioClip(getClass().getResource(res.getString("userleave_wav")));
newmsg=getAudioClip(getClass().getResource(res.getString("newmsg_wav")));
//java.applet.AudioClip audioClip = getAudioClip(baseURL, relativeURL);
}}catch(Exception e) {}
try{
} catch (Exception e) {}
if(getClass().getResource(res.getString("userm_gif"))!=null)
{
javax.swing.tree.DefaultTreeCellRenderer renderer = new javax.swing.tree.DefaultTreeCellRenderer();
renderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource(res.getString("userm_gif")), res.getString("User")));
userTree.setCellRenderer(renderer);
}
else
{
System.out.println(res.getString("Could_not_load_userm"));
}
msgRoot = new javax.swing.tree.DefaultMutableTreeNode(res.getString("Message_List"));
msgModel=new javax.swing.tree.DefaultTreeModel(msgRoot);
msgTree = new javax.swing.JTree(msgModel);
msgTree.putClientProperty(res.getString("JTree_lineStyle"), res.getString("Angled"));
if(getClass().getResource(res.getString("nm_gif"))!=null)
{
javax.swing.tree.DefaultTreeCellRenderer msgrenderer = new javax.swing.tree.DefaultTreeCellRenderer();
msgrenderer.setLeafIcon(new javax.swing.ImageIcon(getClass().getResource(res.getString("nm_gif")), res.getString("New_Message")));
msgTree.setCellRenderer(msgrenderer);
}
else
{
System.out.println(res.getString("Could_not_load_nm_gif"));
}
messageScroll = new javax.swing.JScrollPane ();
setName (res.getString("ChatPanel"));
nameText.setPreferredSize (new java.awt.Dimension(70, 45));
nameText.setBorder (new javax.swing.border.TitledBorder(res.getString("Name")));
nameText.setBackground (java.awt.Color.lightGray);
nameText.setMinimumSize (new java.awt.Dimension(70, 45));
nameText.setOpaque (false);
North.add (nameText);
if(isStandalone==false)
{
if(getCodeBase().getHost().toString().equals(""))
{
serverCombo.addItem(res.getString("127_0_0_1"));
}else
{
serverCombo.addItem(getCodeBase().getHost().toString());
}
}else
{
serverCombo.addItem("");
}
serverCombo.setPreferredSize (new java.awt.Dimension(130, 45));
serverCombo.setBorder (new javax.swing.border.TitledBorder(res.getString("Server_Name_IP")));
serverCombo.setMinimumSize (new java.awt.Dimension(126, 45));
serverCombo.setEditable (isStandalone);
serverCombo.setOpaque (false);
serverCombo.addActionListener (new java.awt.event.ActionListener () {
public void actionPerformed (java.awt.event.ActionEvent evt) {
comboChanged (evt);
}
}
);
North.add (serverCombo);
portText.setPreferredSize (new java.awt.Dimension(40, 45));
portText.setBorder (new javax.swing.border.TitledBorder(res.getString("Port")));
portText.setMaximumSize (new java.awt.Dimension(60, 2147483647));
portText.setText (res.getString("1024"));
portText.setMinimumSize (new java.awt.Dimension(40, 45));
portText.setOpaque (false);
North.add (portText);
connectButton.setText (res.getString("Connect"));
connectButton.setOpaque (false);
connectButton.addActionListener (new java.awt.event.ActionListener () {
public void actionPerformed (java.awt.event.ActionEvent evt) {
connectButtonActionPerformed (evt);
}
}
);
North.add (connectButton);
getContentPane ().add (North, java.awt.BorderLayout.NORTH);
messageText.setPreferredSize (new java.awt.Dimension(200, 43));
messageText.setBorder (new javax.swing.border.TitledBorder(res.getString("Message")));
messageText.setBackground (java.awt.Color.lightGray);
messageText.setMinimumSize (new java.awt.Dimension(80, 43));
messageText.setEnabled (false);
messageText.setOpaque (false);
messageText.addKeyListener (new java.awt.event.KeyAdapter () {
public void keyPressed (java.awt.event.KeyEvent evt) {
messageTextKeyPressed (evt);
}
}
);
South.add (messageText);
sendButton.setPreferredSize (new java.awt.Dimension(40, 27));
sendButton.setMaximumSize (new java.awt.Dimension(40, 27));
sendButton.setText (res.getString("Send"));
sendButton.setMinimumSize (new java.awt.Dimension(40, 27));
sendButton.setEnabled (false);
sendButton.setOpaque (false);
sendButton.addActionListener (new java.awt.event.ActionListener () {
public void actionPerformed (java.awt.event.ActionEvent evt) {
sendButtonActionPerformed (evt);
}
}
);
South.add (sendButton);
getContentPane ().add (South, java.awt.BorderLayout.SOUTH);
SplitPane.setOneTouchExpandable (true);
SplitPane.setDividerLocation(110);
UserScroll.setPreferredSize (new java.awt.Dimension(50, 100));
UserScroll.setMinimumSize (new java.awt.Dimension(40, 40));
UserScroll.setOpaque (false);
userTree.setShowsRootHandles (true);
userTree.setMaximumSize (new java.awt.Dimension(74, 999999));
userTree.setMinimumSize (new java.awt.Dimension(60, 70));
userTree.expandRow(0);
msgTree.setShowsRootHandles (false);
msgTree.expandRow(0);
msgTree.setRootVisible(false);
UserScroll.setViewportView (userTree);
SplitPane.setLeftComponent (UserScroll);
messageScroll.setViewportBorder (new javax.swing.border.BevelBorder(1));
messageScroll.setOpaque (false);
messageScroll.setViewportView (msgTree);
SplitPane.setRightComponent (messageScroll);
getContentPane ().add (SplitPane, java.awt.BorderLayout.CENTER);
}
private void messageTextKeyPressed (java.awt.event.KeyEvent evt) {
//if key is 'enter' then send message
//if messageText!="" then sendButton enabled, else disabled
if(messageText.getText().equals("")==false)
{
if(evt.getKeyCode()==evt.VK_ENTER)
{
connect.send(nameText.getText()+res.getString("says_")+messageText.getText());
messageText.setText("");
}
}
}
private void sendButtonActionPerformed (java.awt.event.ActionEvent evt) {
if(messageText.getText().equals("")==false)
{
connect.send(nameText.getText()+res.getString("says_")+messageText.getText());
messageText.setText("");
}
}
private void comboChanged (java.awt.event.ActionEvent evt) {
//add item to list
serverCombo.addItem(serverCombo.getSelectedItem());
}
private void connectButtonActionPerformed (java.awt.event.ActionEvent evt) {
userRoot.removeAllChildren();
usrModel.reload();
if(portText.getText().equals("")||portText.getText()==null)
{
portText.setText(res.getString("1024"));
}
if(serverCombo.getSelectedItem().toString().equals("")||serverCombo.getItemCount()<=0)
{
message(res.getString("Error_Please_enter"));
connectButton.setSelected(false);
}
else if(nameText.getText().equals(""))
{
message(res.getString("Error_Please_enter_a"));
connectButton.setSelected(false);
}
else
{
if(connectButton.getText().equals(res.getString("Connect")))
{
connectButton.setEnabled(false);
connectButton.setText(res.getString("Disconnect"));
clear();
message(res.getString("Connecting_to_server_"));
//conneciton code
connect = new TcpConnect(serverCombo.getSelectedItem().toString(), Integer.parseInt(portText.getText()),this);
serverCombo.setEnabled(false);
portText.setEnabled(false);
nameText.setEnabled(false);
sendButton.setEnabled(true);
messageText.setEnabled(true);
message(res.getString("Done"));
connectButton.setEnabled(true);
}
else
{
connectButton.setEnabled(false);
connectButton.setText(res.getString("Connect"));
message(res.getString("Disconnecting_from"));
serverCombo.setEnabled(true);
portText.setEnabled(true);
nameText.setEnabled(true);
sendButton.setEnabled(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -