⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicalwebserver.java

📁 char44-5 图形Web服务器 提供了本书第4章的图形Web服务器实例的源程序;
💻 JAVA
字号:
//GraphicalWebServer.java
import java.awt.event.* ;
import java.awt.*;
import java.net.*;
import javax.swing.*;

public final class GraphicalWebServer extends JFrame implements ActionListener{
	//设置添加到Frame中的组件
	public JTextArea display = null;
	public JButton bStart = null;
	public JButton bStop = null;
	public JButton bExit = null;
	public JTextField tfPort = null;
	ServerThread listening = null;
	boolean hasStarted = false;
	GraphicalWebServer(){
		super("Simple Java Web Server");
		addWindowListener(
			new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				exitServer();
			}});
			//层次设置
			getContentPane().setLayout(new BorderLayout());
			setLocation(100,0) ;  
			//设置背景颜色
			setBackground(Color.lightGray) ;
			JPanel buttons = new JPanel(new GridLayout(1,5));
			bStart = new JButton("Start");
			bStop = new JButton("Stop");
			bExit = new JButton("Exit");
			JButton bClear = new JButton("Clear");
			bStop.addActionListener(this);
			bStart.addActionListener(this);
			bExit.addActionListener(this);
			bClear.addActionListener(this);
			JLabel lPort = new JLabel("Port:");
			tfPort = new JTextField("80", 6);
			buttons.add(bStart);
			buttons.add(bStop);
			buttons.add(bExit);
			buttons.add(bClear);
			buttons.add(lPort);
			buttons.add(tfPort);
			getContentPane().add(BorderLayout.NORTH, buttons);
			display = new JTextArea("",20,40);
			display.setLineWrap(true);
			display.setWrapStyleWord(true);
			JScrollPane displayTextPane = new JScrollPane(display,
				JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
			getContentPane().add(BorderLayout.SOUTH, displayTextPane);
			pack();
			show();
	}
	public void startServer(){
		
		bStart.setEnabled(false);	
		bStop.setEnabled(true);
		if(hasStarted){
            listening.resume();
		}
		else{
            hasStarted = true;
            int port = 80;
            try{
				// 设置端口号.
				port = Integer.parseInt(tfPort.getText());
            }
			catch (NumberFormatException e){
				//异常处理
				display.append("Port number invalid, setting to port 80\n");
			}
		//开始等待新的连接
            listening = new ServerThread(port, display);
            listening.start();
		}
	}
	public void exitServer(){
		display.append("Exiting server\n");
		if(listening !=null){
            listening.stop();
		}
		
		System.exit(0);
	}
	public static void main(String args[]) throws Exception {
		new GraphicalWebServer();
	}
	public void stopServer(){
		bStart.setEnabled(true);
		bStop.setEnabled(false);
		listening.suspend();
	}
	//设置事件的响应
	public void actionPerformed (ActionEvent event) {
		String command = event.getActionCommand();
		if(command.equals("Start")){
            startServer();
		}
		if(command.equals("Stop")){
            stopServer();
		}
		if(command.equals("Exit")){
            exitServer();
		}
		if(command.equals("Clear")){
            display.setText("");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -