?? main.java
字號:
/*
* Created on 2004-12-11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package chatserver;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
/**
* @author Lance
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Main extends JFrame implements ChatServerListener{
ChatServerImpl server=ChatServerImpl.getInstance();
JTextArea textArea;
JMenuBar menuBar;
JToolBar toolBar;
StartServerAction startAction=new StartServerAction();
StopServerAction stopAction=new StopServerAction();
public static void main(String[] args) {
Main main=new Main();
main.show();
}
public Main(){
super("聊天-服務器");
setSize(300,500);
layoutComponents();
}
private void layoutComponents(){
setupMenu();
setupToolBar();
textArea=new JTextArea();
textArea.setSize(200,300);
textArea.setEditable(false);
JScrollPane scrollPane=new JScrollPane(textArea);
getContentPane().add(scrollPane,BorderLayout.CENTER);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/**
*
*/
private void setupToolBar() {
// TODO Auto-generated method stub
toolBar=new JToolBar();
JButton button=null;
addTool(toolBar, startAction);
addTool(toolBar, stopAction);
getContentPane().add(toolBar, BorderLayout.NORTH);
}
/**
*
*/
private void setupMenu() {
// TODO Auto-generated method stub
menuBar=new JMenuBar();
JMenuItem startServer=new JMenuItem(startAction);
JMenuItem stopServer=new JMenuItem(stopAction);
JMenuItem exit=new JMenuItem("離開");
exit.addActionListener(new AbstractAction(){
public void actionPerformed(ActionEvent evt){
exit();
}
});
JMenu server=new JMenu("服務器");
server.add(startServer);
server.add(stopServer);
server.add(exit);
menuBar.add(server);
setJMenuBar(menuBar);
}
JButton addTool(//此方法內(nèi)容似乎有問題,b不知從何而來
JToolBar toolBar,
AbstractAction action){
b.setAction(action);
b.setText(null);
toolBar.add(b);
return b;
}
private void exit(){
try{
server.stop();
}catch(Exception e){
e.printStackTrace();
}
System.exit(0);
}
public void serverEvent(ChatServerEvent evt){
textArea.append(evt.getMessage()+"\n");
}
class StartServerAction extends AbstractAction{
public StartServerAction(){
super("啟動");
putValue(
Action.SMALL_ICON,
new ImageIcon(getClass().getResource("image/start.gif")));
putValue(Action.SHORT_DESCRIPTION, "啟動聊天服務器");
putValue(
Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke("control A"));
}
public void actionPerformed(ActionEvent evt){
try{
server.addListener(Main.this);
textArea.setText("");
server.start();
stopAction.setEnabled(true);
this.setEnabled(false);
}catch(Exception ex){
textArea.append("服務器啟動錯誤\n");
server.removeListener(Main.this);
ex.printStackTrace();
return;
}
}
}//End of InnerClass StarServerAction
class StopServerAction extends AbstractAction{
public StopServerAction(){
super("停止");
putValue(
Action.SMALL_ICON,
new ImageIcon(getClass().getResource("images/stop.gif")));
putValue(Action.SHORT_DESCRIPTION, "停止聊天服務器");
putValue(
Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke("control O"));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent arg0){
try{
server.stop();
server.removeListener(Main.this);
startAction.setEnabled(true);
this.setEnabled(false);
}catch(Exception e){
textArea.append("服務器停止錯誤\n");
e.printStackTrace();
return;
}
}
}//End of InnerClass StopServerAction
}//END CLASS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -