课 程 设 计 报 告 书 专 用 纸
JMenu conMenu=new JMenu (\设置(C)\
(U)\(C)\
JMenuItem userItem=new JMenuItem (\用户设置ImageIcon(\
JMenuItem connectItem=new JMenuItem (\连接设置ImageIcon(\
JMenu helpMenu=new JMenu (\帮助(H)\
JMenuItem
(\
帮
助
(H)\
JMenuItem helpItem=new ImageIcon(\
//建立工具栏
2);
//为操作菜单栏设置热键'V'
operateMenu.setMnemonic('O'); //为用户登录设置快捷键为ctrl+i
this.setResizable(false);
this.setTitle(\聊天室客户端\设置标题 //建立工具栏中的按钮组件
JButton loginButton;//用户登录 JButton logoffButton;//用户注销
JButton userButton;//用户信息的设置 JButton connectButton;//连接设置 JButton exitButton;//退出按钮
//框架的大小
Dimension faceSize = new Dimension(400, 600); JPanel downPanel ;
GridBagLayout girdBag;
GridBagConstraints girdBagCon; public ChatClient(){ init();//初始化程序
//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack();
//设置框架的大小
this.setSize(faceSize); this.setVisible(true);
setIconImage(getToolkit().getImage(\
//设置运行时窗口的位置
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,
(int) (screenSize.height - faceSize.getHeight()) /
JToolBar toolBar = new JToolBar();
第 25 页 共 18 页
课 程 设 计 报 告 书 专 用 纸
loginItem.setMnemonic ('I');
loginItem.setAccelerator
(KeyEvent.VK_I,InputEvent.CTRL_MASK));
//为用户注销快捷键为ctrl+l
logoffItem.setMnemonic ('L');
logoffItem.setAccelerator
(KeyEvent.VK_L,InputEvent.CTRL_MASK));
//为退出快捷键为ctrl+x
exitItem.setMnemonic ('X');
exitItem.setAccelerator
(KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为设置菜单栏设置热键'C'
conMenu.setMnemonic('C');
//为用户设置设置快捷键为ctrl+u userItem.setMnemonic ('U');
userItem.setAccelerator
(KeyEvent.VK_U,InputEvent.CTRL_MASK));
//为连接设置设置快捷键为ctrl+c connectItem.setMnemonic ('C');
connectItem.setAccelerator
(KeyEvent.VK_C,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'H' helpMenu.setMnemonic('H'); //为帮助设置快捷键为ctrl+p
helpItem.setMnemonic ('H');
helpItem.setAccelerator (KeyEvent.VK_H,InputEvent.CTRL_MASK));
} /**
* 程序初始化函数 */
public void init(){ Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); //添加菜单栏
operateMenu.add (loginItem);
operateMenu.add (logoffItem);
(KeyStroke.getKeyStroke
(KeyStroke.getKeyStroke
(KeyStroke.getKeyStroke
(KeyStroke.getKeyStroke
(KeyStroke.getKeyStroke
(KeyStroke.getKeyStroke
第 26 页 共 18 页
课 程 设 计 报 告 书 专 用 纸
checkbox = new JCheckBox(\悄悄话\checkbox.setSelected(false); actionlist = new JComboBox(); actionlist.addItem(\微笑地\actionlist.addItem(\高兴地\actionlist.addItem(\轻轻地\actionlist.addItem(\生气地\actionlist.setSelectedIndex(0); //初始时
loginButton.setEnabled(true); logoffButton.setEnabled(false);
operateMenu.addSeparator(); operateMenu.add (exitItem); jMenuBar.add (operateMenu); conMenu.add (userItem); conMenu.addSeparator(); conMenu.add (connectItem); jMenuBar.add (conMenu); helpMenu.add (helpItem); jMenuBar.add (helpMenu); setJMenuBar (jMenuBar); //初始化按钮
loginButton = new JButton(\登录\
logoffButton = new JButton(\注销\
userButton = new JButton(\用户设置\connectButton = new JButton(\连接设置\exitButton = new JButton(\退出\//当鼠标放上显示信息
loginButton.setToolTipText(\连接到指定的服务器\logoffButton.setToolTipText(\与服务器断开连接\
userButton.setToolTipText(\设置用户信息\
connectButton.setToolTipText(\设置所要连接到的服务器信息\//将按钮添加到工具栏 toolBar.add(userButton); toolBar.add(connectButton);
toolBar.addSeparator();//添加分隔栏 toolBar.add(loginButton);
toolBar.add(logoffButton);
toolBar.addSeparator();//添加分隔栏 toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
第 27 页 共 18 页
课 程 设 计 报 告 书 专 用 纸
//为菜单栏添加事件监听
loginItem.addActionListener(this); logoffItem.addActionListener(this); exitItem.addActionListener(this); userItem.addActionListener(this); connectItem.addActionListener(this); helpItem.addActionListener(this); //添加按钮的事件侦听
loginButton.addActionListener(this); logoffButton.addActionListener(this); userButton.addActionListener(this); connectButton.addActionListener(this); exitButton.addActionListener(this); combobox = new JComboBox(); combobox.insertItemAt(\所有人\combobox.setSelectedIndex(0); messageShow = new JTextArea(); messageShow.setEditable(false); //添加滚动条
messageScrollPane = new JScrollPane(messageShow, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
messageScrollPane.setPreferredSize(new Dimension(400,400)); messageScrollPane.revalidate(); clientMessage = new JTextField(23); clientMessage.setEnabled(false); clientMessageButton = new JButton(); clientMessageButton.setText(\发送\//添加系统消息的事件侦听
clientMessage.addActionListener(this); clientMessageButton.addActionListener(this); sendToLabel = new JLabel(\发送至:\
express = new JLabel(\表情: \messageLabel = new JLabel(\发送消息:\downPanel = new JPanel();
girdBag = new GridBagLayout();
downPanel.setLayout(girdBag);
girdBagCon = new GridBagConstraints();
第 28 页 共 18 页
课 程 设 计 报 告 书 专 用 纸
girdBagCon.gridx = 0; girdBagCon.gridy = 0; girdBagCon.gridwidth = 5; girdBagCon.gridheight = 2; girdBagCon.ipadx = 5; girdBagCon.ipady = 5;
JLabel none = new JLabel(\girdBag.setConstraints(none,girdBagCon); downPanel.add(none);
girdBagCon = new GridBagConstraints(); girdBagCon.gridx = 0; girdBagCon.gridy = 2;
girdBagCon.insets = new Insets(1,0,0,0); //girdBagCon.ipadx = 5; //girdBagCon.ipady = 5;
girdBag.setConstraints(sendToLabel,girdBagCon); downPanel.add(sendToLabel);
girdBagCon = new GridBagConstraints(); girdBagCon.gridx =1; girdBagCon.gridy = 2;
girdBagCon.anchor = GridBagConstraints.LINE_START; girdBag.setConstraints(combobox,girdBagCon); downPanel.add(combobox);
girdBagCon = new GridBagConstraints();
girdBagCon.gridx =2; girdBagCon.gridy = 2;
girdBagCon.anchor = GridBagConstraints.LINE_END; girdBag.setConstraints(express,girdBagCon); downPanel.add(express);
girdBagCon = new GridBagConstraints(); girdBagCon.gridx = 3; girdBagCon.gridy = 2;
girdBagCon.anchor = GridBagConstraints.LINE_START; //girdBagCon.insets = new Insets(1,0,0,0); //girdBagCon.ipadx = 5; //girdBagCon.ipady = 5;
girdBag.setConstraints(actionlist,girdBagCon); downPanel.add(actionlist);
girdBagCon = new GridBagConstraints(); girdBagCon.gridx = 4;
第 29 页 共 18 页