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

📄 chatclient.java

📁 一个多播的实现程序
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;

//ChatClient code:
public class ChatClient implements Runnable, WindowListener, ActionListener, ListSelectionListener{
  protected String host;
  protected int port;

  public TextArea output;
  protected TextField input;
  protected TextArea temp;
  SketchFrame window;
   String yourname;
  //static ChatHandler hobj;

GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNames=e.getAvailableFontFamilyNames();
private JList fontList=new JList (fontNames);

String[] colorNames={"Red","Blue","Green","Black","Orange","Yellow","Pink","Gray","DarkGray","Cyan","White"};
Color[] fontcolor={Color.red,Color.blue,Color.green,Color.black,Color.orange,Color.yellow,Color.pink,Color.gray,Color.darkGray,Color.cyan,Color.white};
//private JList fontcolorList=new JList (fontcolor);
private JList fontcolorList=new JList (colorNames);

  Font f=new Font("SansSerif",Font.PLAIN,16);
  Color c=new Color(0);
public ChatClient()
{

}
  public ChatClient (String host, int port, SketchFrame window) {
    this.host = host;
    this.port = port;
    this.yourname=JOptionPane.showInputDialog("Enter Login name:");

    window.setSize(100,100);
    window.setBackground(Color.cyan);
    output = new TextArea (5,30);
    output.setEditable (false);
    temp = new TextArea (5,30);
    temp.setVisible(false);
    input = new TextField(30);
    input.setFont(f);
    input.setForeground(Color.blue);
    output.setFont(f);
    output.setForeground(Color.blue);
    input.addActionListener (this);


    GridBagConstraints constraints = new GridBagConstraints();
    window.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
    window.getContentPane().setLayout(new BorderLayout(40,50));

    window.getContentPane().add (temp,BorderLayout.NORTH);
    constraints.insets =new Insets(10,10,10,10);
    window.getContentPane().add (output,BorderLayout.CENTER);
    window.getContentPane().add (input,BorderLayout.SOUTH);


fontList.setValueIsAdjusting(true);
fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fontList.setSelectedValue(f.getFamily(),true);
fontList.addListSelectionListener(this);
JScrollPane chooseFont = new JScrollPane(fontList);
chooseFont.setMinimumSize(new Dimension(15,20));
chooseFont.setVisible(true);
window.getContentPane().add (chooseFont,BorderLayout.WEST);

fontcolorList.setValueIsAdjusting(true);
fontcolorList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fontcolorList.setSelectedValue(Color.blue,true);
fontcolorList.addListSelectionListener(this);
JScrollPane chooseFontColor = new JScrollPane(fontcolorList);
chooseFontColor.setMinimumSize(new Dimension(15,20));
chooseFontColor.setVisible(true);
window.getContentPane().add (chooseFontColor,BorderLayout.EAST);

window.pack();
  }


public void valueChanged(ListSelectionEvent e)
{
Object st;
if(!e.getValueIsAdjusting())
{
	f=new Font((String)fontList.getSelectedValue(),Font.PLAIN,16);
	input.setFont(f);
	output.setFont(f);
	st=fontcolorList.getSelectedValue();
        if(st=="Red")
	{
	input.setForeground(Color.red);
	output.setForeground(Color.red);
        //input.setForeground((Color)fontcolorList.getSelectedValue());
	//output.setForeground((Color)fontcolorList.getSelectedValue());
	}
	if(st=="Blue")
	{	input.setForeground(Color.blue);
		output.setForeground(Color.blue);	}
	if(st=="Green")
	{	input.setForeground(Color.green);
		output.setForeground(Color.green);	}
	if(st=="Black")
	{	input.setForeground(Color.black);
		output.setForeground(Color.black);	}
	if(st=="Orange")
	{	input.setForeground(Color.orange);
		output.setForeground(Color.orange);	}
	if(st=="Yellow")
	{	input.setForeground(Color.yellow);
		output.setForeground(Color.yellow);	}
	if(st=="Pink")
	{	input.setForeground(Color.pink);
		output.setForeground(Color.pink);	}
	if(st=="Gray")
	{	input.setForeground(Color.gray);
		output.setForeground(Color.gray);	}
	if(st=="DarkGray")
	{	input.setForeground(Color.darkGray);
		output.setForeground(Color.darkGray);	}
	if(st=="Cyan")
	{	input.setForeground(Color.cyan);
		output.setForeground(Color.cyan);	}
	if(st=="White")
	{	input.setForeground(Color.white);
		output.setForeground(Color.white);	}

}
}
/*public String Fun()
{
	return (yourname);
}*/


public TextArea func()
{
	return(output);
}
public Insets getInsets()
	{
	return new Insets(10,10,10,10);
	}
  protected DataInputStream dataIn;
  protected DataOutputStream dataOut;
  protected Thread listener;

  public synchronized void start () throws IOException {
    if (listener == null) {
		//output.append(yourname + " has logged on\n");
		   //dataOut.writeUTF (yourname+" has logged off ");
		   //dataOut.flush ();
      Socket socket = new Socket (host, port);
      try {
        dataIn = new DataInputStream
          (new BufferedInputStream (socket.getInputStream ()));
        dataOut = new DataOutputStream
          (new BufferedOutputStream (socket.getOutputStream ()));
          dataOut.writeUTF (yourname+" has logged on\n ");
      //dataOut.flush ();

      } catch (IOException ex) {
        socket.close ();

        throw ex;
      }
      listener = new Thread (this);
      listener.start ();
      window.setVisible (true);
    }
  }

  public synchronized void stop () throws IOException {
    //window.setVisible (false);
    if (listener != null) {
      listener.interrupt ();
       listener = null;
      dataOut.close ();
    }
  }
  public void run() {
    try {
      while (!Thread.interrupted ()) {
        String line = dataIn.readUTF ();
        //String message=yourname +" says:\n ";

       //output.append ("\n"+message + line + "\n");
       output.append (line + "\n");
      }
    } catch (IOException ex) {
      handleIOException (ex);
    }
  }

  protected synchronized void handleIOException (IOException ex) {
    if (listener != null) {
      output.append (ex + "\n");
      input.setVisible (false);
      window.validate ();
      if (listener != Thread.currentThread ())
        listener.interrupt ();
      listener = null;
      try {
        dataOut.close ();

      } catch (IOException ignored) {
      }
    }
  }

  public void windowOpened (WindowEvent event) {
    input.requestFocus ();
  }

  public void windowClosing (WindowEvent event) {
    try {
      stop ();

    } catch (IOException ex) {
      ex.printStackTrace ();
    }
  }

  public void windowClosed (WindowEvent event) {}
  public void windowIconified (WindowEvent event) {}
  public void windowDeiconified (WindowEvent event) {}
  public void windowActivated (WindowEvent event) {}
  public void windowDeactivated (WindowEvent event) {}

  public void actionPerformed (ActionEvent event) {
    try {
      input.selectAll ();
      dataOut.writeUTF (yourname+" says:\n "+event.getActionCommand ());
      dataOut.flush ();
    } catch (IOException ex) {
      handleIOException (ex);
    }
  }
}//End of chatClient code

⌨️ 快捷键说明

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