📄 client.java
字号:
package com.briup.ChatServerClient;import java.io.*;import java.net.*;import java.util.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Client { JFrame loginFrame; JTextArea incoming; JTextField outgoing; JTextField nameText; BufferedReader reader; PrintWriter writer; Socket sock; String nickname; JFrame frame; JScrollPane qScroller; public static void main(String[] args) { Client client = new Client(); client.go(); } public void go() { JFrame frame = new JFrame("Francis Yan's Chat Client"); JPanel mainPanel = new JPanel(); incoming = new JTextArea(15,26); incoming.setLineWrap(true); incoming.setWrapStyleWord(true); incoming.setEditable(false); qScroller = new JScrollPane(incoming); qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); qScroller.setAutoscrolls(true); outgoing = new JTextField(30); JButton sendButton = new JButton("Send"); JButton clrButton = new JButton("Clear"); clrButton.addActionListener(new ClrButtonListener()); sendButton.addActionListener(new SendButtonListener()); nameText = new JTextField(8); JLabel nameLabel = new JLabel("Nickname:"); outgoing.addKeyListener(new EnterListener()); mainPanel.add(qScroller); mainPanel.add(outgoing); mainPanel.add(nameLabel); mainPanel.add(nameText); mainPanel.add(sendButton); mainPanel.add(clrButton); frame.getContentPane().add(BorderLayout.CENTER,mainPanel); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("Menu"); JMenuItem saveMenuItem = new JMenuItem("Save Text"); JMenuItem exitMenuItem = new JMenuItem("Exit"); saveMenuItem.addActionListener(new SaveListener()); exitMenuItem.addActionListener(new ExitListener()); fileMenu.add(saveMenuItem); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); frame.setJMenuBar(menuBar); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); qScroller.setWheelScrollingEnabled(true); frame.setSize(400,340); frame.setResizable(false); frame.setVisible(true); setUpNetworking(); Thread readerThread = new Thread(new IncomingReader()); readerThread.start(); } private void setUpNetworking() { try { sock = new Socket("192.168.1.1",5000); InputStreamReader streamReader = new InputStreamReader(sock.getInputStream()); reader = new BufferedReader(streamReader); writer = new PrintWriter(sock.getOutputStream()); System.out.println("networking established"); } catch(IOException ex) { ex.printStackTrace(); } } public class SendButtonListener implements ActionListener { public void actionPerformed(ActionEvent ev) { try { if(nameText.getText().equals("")) incoming.append("Please input your name\n"); else{ if(outgoing.getText().equals("")) incoming.append("Couldn't send empty message\n"); else{writer.println(nameText.getText()+": "+outgoing.getText()); writer.flush();}} } catch(Exception ex) { ex.printStackTrace(); } outgoing.setText(""); outgoing.requestFocus(); //System.out.println(incoming.getText().length()); } } public class ClrButtonListener implements ActionListener { public void actionPerformed(ActionEvent ev) { incoming.setText(""); } } public class EnterListener extends KeyAdapter { public void keyPressed(KeyEvent e){ if(e.getKeyCode()==10){ //try{Thread.sleep(1000);}catch(Exception ex){ex.printStackTrace();} try { if(nameText.getText().equals("")) incoming.append("Please input your name\n"); else{ if(outgoing.getText().equals("")) incoming.append("Couldn't send empty message\n"); else{writer.println(nameText.getText()+": "+outgoing.getText()); writer.flush();}} } catch(Exception ex) { ex.printStackTrace(); } outgoing.setText(""); outgoing.requestFocus(); } } } public class SaveListener implements ActionListener { public void actionPerformed(ActionEvent ev) { try { FileWriter fileWriter = new FileWriter("Record.txt"); fileWriter.write(incoming.getText()); fileWriter.close(); } catch(IOException ex) { System.out.println("couldn't write the Chatting Record!!"); ex.printStackTrace(); } } } public class ExitListener implements ActionListener { public void actionPerformed(ActionEvent ev) { System.exit(0); } } public class IncomingReader implements Runnable { public void run() { String message; try { while((message=reader.readLine())!=null) { System.out.println("read"+" "+message); incoming.append(message + "\n"); incoming.setCaretPosition(incoming.getText().length()); } } catch (Exception ex) {ex.printStackTrace();} } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -