1.首先是服务器的界面实现,如下:
2.如何实现呢?主要使用swing和awt,首先整个是一个Frame容器,然后设定它的布局为BoderLayout,最上边的是一个Panel,设定它的布局为GridLayout,中间使用了JSplitPane,把左右两个面板放在里面
、
package Chat; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.BindException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.StringTokenizer; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.TitledBorder; public class Server { private JFrame frame; private JTextArea contentArea; private JTextField txt_message; private JTextField txt_max; private JTextField txt_port; private JButton btn_start; private JButton btn_stop; private JButton btn_send; private JPanel northPanel; private JPanel southPanel; private JScrollPane rightPanel; private JScrollPane leftPanel; private JSplitPane centerSplit; private JList userList; private DefaultListModel listModel; private ServerSocket serverSocket; //private ServerThread serverThread; //private ArrayList<ClientThread> clients; private boolean isStart = false; public static void main(String []args) { new Server(); } public Server() { frame = new JFrame("服务器"); //放在bin下包中文件 frame.setIconImage(Toolkit.getDefaultToolkit().createImage(Server.class.getResource("qq.jpg"))); contentArea = new JTextArea(); contentArea.setEditable(false); contentArea.setForeground(Color.pink); txt_message = new JTextField(); txt_max = new JTextField("30"); txt_port = new JTextField("6666"); btn_start = new JButton("启动"); btn_stop = new JButton("停止"); btn_send = new JButton("发送"); btn_stop.setEnabled(false); //使用了defaultListModel可以是列表的可选项是动态改变的!如果不用,列表中只能出现代码中定义的那些可选项 listModel = new DefaultListModel(); southPanel = new JPanel(new BorderLayout()); southPanel.setBorder(new TitledBorder("写消息")); southPanel.add(txt_message,"Center"); southPanel.add(btn_send,"East"); leftPanel = new JScrollPane(userList); leftPanel.setBorder(new TitledBorder("在线用户")); rightPanel = new JScrollPane(contentArea); rightPanel.setBorder(new TitledBorder("消息显示区")); centerSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightPanel); northPanel = new JPanel(); northPanel.setLayout(new GridLayout(1,6)); northPanel.add(new JLabel("人数上限")); northPanel.add(txt_max); northPanel.add(new JLabel("端口")); northPanel.add(txt_port); northPanel.add(btn_start); northPanel.add(btn_stop); northPanel.setBorder(new TitledBorder("配置信息")); frame.setLayout(new BorderLayout()); frame.add(northPanel,"North"); frame.add(centerSplit,"Center"); frame.add(southPanel, "South"); frame.setSize(600, 400); int screen_width = Toolkit.getDefaultToolkit().getScreenSize().width; int screen_height = Toolkit.getDefaultToolkit().getScreenSize().height; frame.setLocation((screen_width-frame.getWidth())/2,(screen_height-frame.getHeight())/2); frame.setVisible(true); } }
文章来源: Java聊天室