java圖形介面聊天室簡版
阿新 • • 發佈:2019-02-08
這是服務端: package server; import javax.swing.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.Calendar; public class Server extends JFrame implements ActionListener{ static JTextArea jta=null; JTextField jtf=null; JScrollPane jsp=null; JButton jb_send=null; JPanel jp=null; static Socket socket=null; static String text_message; public static void main(String[] args) throws IOException { ServerSocket server=null; new Server(); try { server=new ServerSocket(8001); socket=server.accept(); } catch(Exception e) { System.out.println("不能監聽:"+e); } while(true) { BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); jta.append(br.readLine()+"\n"); } } public Server(){ jta=new JTextArea(); jta.setEditable(false); jsp=new JScrollPane(jta); jtf=new JTextField(20); jp=new JPanel(); jb_send=new JButton("傳送"); jb_send.addActionListener(this); jp.add(jtf); jp.add(jb_send); this.add(jsp,"Center"); this.add(jp,"South"); this.setTitle("服務端"); this.setSize(300, 200); this.setLocation(318,186); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(e.getSource()==jb_send) { if(jtf.getText().equals("")) { JOptionPane.showMessageDialog(null, "訊息不能為空"); } else { text_message=jtf.getText(); jta.append("服務端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message+"\n"); PrintWriter pw; try { pw = new PrintWriter(socket.getOutputStream(),true); if(!text_message.equals("")) { pw.println("服務端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message); } } catch (IOException e1) { e1.printStackTrace(); } jtf.setText(""); } } } } 這是客戶端: package client; import java.io.*; import java.net.*; import java.util.*; import java.awt.event.*; import javax.swing.*; public class Client extends JFrame implements ActionListener{ static JTextArea jta=null; JTextField jtf=null; JPanel jp=null; JButton jb_send=null; JScrollPane jsp=null; static String text_message; static Socket socket=null; public static void main(String[] args) throws IOException { new Client(); socket=new Socket("127.0.0.1",8001); while(true) { BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); jta.append(is.readLine()+"\n"); } } public Client() { jta=new JTextArea(); jta.setEditable(false); jtf=new JTextField(20); jb_send=new JButton("傳送"); jb_send.addActionListener(this); jp=new JPanel(); jsp=new JScrollPane(jta); jp.add(jtf); jp.add(jb_send); this.add(jsp,"Center"); this.add(jp,"South"); this.setTitle("客戶端"); this.setSize(300, 200); this.setLocation(636,186); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(e.getSource()==jb_send) { if(jtf.getText().equals("")) { JOptionPane.showMessageDialog(null, "訊息不能為空"); } else { text_message=jtf.getText(); try { PrintWriter pw=null; pw=new PrintWriter(Client.socket.getOutputStream(),true); if(!text_message.equals("")) { pw.println("客戶端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message); } } catch(Exception e1) { e1.printStackTrace(); } jta.append("客戶端: "+Calendar.getInstance().getTime().toLocaleString()+" "+text_message+"\n"); jtf.setText(""); } } } }
下面是效果圖: