如何修改本地html文件的内容

javaxiaomingxin 2017-06-24 09:38:25
如图
信息聊天区是JEditorPane嵌入的浏览器通过的打开本地html文件来显示聊天内容
下面是我客户端 的 代码 要如何修改呢
...全文
774 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaxiaomingxin 2017-06-24
  • 打赏
  • 举报
回复
         try {  
                    boolean flag = closeConnection();// 断开连接  
                    if (flag == false) {  
                        throw new Exception("断开连接发生异常!");  
                    }  
                    JOptionPane.showMessageDialog(frame, "成功断开!");  
                } catch (Exception exc) {  
                    JOptionPane.showMessageDialog(frame, exc.getMessage(),  
                            "错误", JOptionPane.ERROR_MESSAGE);  
                }  
            }  
        });  
   
        // 关闭窗口时事件  
        frame.addWindowListener(new WindowAdapter() {  
            public void windowClosing(WindowEvent e) {  
                if (isConnected) {  
                    closeConnection();// 关闭连接  
                }  
                System.exit(0);// 退出程序  
            }  
        });  
        //单击添加图片事件
        tjtpBT.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              jfc = new JFileChooser();
             if(jfc.showOpenDialog(westTextArea)==JFileChooser.APPROVE_OPTION ){
              //解释下这里,弹出个对话框,可以选择要上传的文件,如果选择了,就把选择的文件的绝对路径打印出来,有了绝对路径,通过JTextField的settext就能设置进去了,那个我没写
//              System.out.println(jfc.getSelectedFile().getAbsolutePath());
             }
             textField.append(jfc.getSelectedFile().getAbsolutePath());
            }
           });
        //单击发送图片按钮
        fstpBT.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
					
						try {
							tpfs();
						} catch (Exception e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
					
					
					  
			}
			
		});
    }  
   
    /**  
     * 连接服务器  
     *   
     * @param port  
     * @param hostIp  
     * @param name  
     */ 
    public boolean connectServer(int port, String hostIp, String name) {  
        // 连接服务器  
        try {  
            socket = new Socket(hostIp, port);// 根据端口号和服务器ip建立连接  
            writer = new PrintWriter(socket.getOutputStream());  
            reader = new BufferedReader(new InputStreamReader(socket  
                    .getInputStream()));  
            // 发送客户端用户基本信息(用户名和ip地址)  
            sendMessage(name + "@" + socket.getLocalAddress().toString());  
            // 开启接收消息的线程  
            messageThread = new MessageThread(reader, textArea);  
            messageThread.start();  
            isConnected = true;// 已经连接上了  
            return true;  
        } catch (Exception e) {  
            textArea.append("与端口号为:" + port + "    IP地址为:" + hostIp  
                    + "   的服务器连接失败!" + "\r\n");  
            isConnected = false;// 未连接上  
            return false;  
        }  
    }  
   
    /**  
     * 发送消息  
     *   
     * @param message  
     */ 
    public void sendMessage(String message) {  
        writer.println(message);  
        writer.flush();  
    }  
   
    /**  
     * 客户端主动关闭连接  
     */ 
    @SuppressWarnings("deprecation")  
    public synchronized boolean closeConnection() {  
        try {  
            sendMessage("CLOSE");// 发送断开连接命令给服务器  
            messageThread.stop();// 停止接受消息线程  
            // 释放资源  
            if (reader != null) {  
                reader.close();  
            }  
            if (writer != null) {  
                writer.close();  
            }  
            if (socket != null) {  
                socket.close();  
            }  
            isConnected = false;  
            return true;  
        } catch (IOException e1) {  
            e1.printStackTrace();  
            isConnected = true;  
            return false;  
        }  
    }  
   
    // 不断接收消息的线程  
    class MessageThread extends Thread {  
        private BufferedReader reader;  
        private JTextArea textArea;  
   
        // 接收消息线程的构造方法  
        public MessageThread(BufferedReader reader, JTextArea textArea) {  
            this.reader = reader;  
            this.textArea = textArea;  
        }  
   
        // 被动的关闭连接  
        public synchronized void closeCon() throws Exception {  
            // 清空用户列表  
            listModel.removeAllElements();  
            // 被动的关闭连接释放资源  
            if (reader != null) {  
                reader.close();  
            }  
            if (writer != null) {  
                writer.close();  
            }  
            if (socket != null) {  
                socket.close();  
            }  
            isConnected = false;// 修改状态为断开  
        }  
   
        public void run() {
            int a= 0;
            String message = "";  
            while (true) {  
                System.out.println(a++);
                try {  
                    message = reader.readLine();  
                    StringTokenizer stringTokenizer = new StringTokenizer(  
                            message, "/@");  
                    String command = stringTokenizer.nextToken();// 命令  
                    if (command.equals("CLOSE"))// 服务器已关闭命令  
                    {  
                        textArea.append("服务器已关闭!\r\n");  
                        closeCon();// 被动的关闭连接  
                        return;// 结束线程  
                    } else if (command.equals("ADD")) {// 有用户上线更新在线列表  
                        String username = "";  
                        String userIp = "";  
                        if ((username = stringTokenizer.nextToken()) != null 
                                && (userIp = stringTokenizer.nextToken()) != null) {  
                            User user = new User(username, userIp);  
                            onLineUsers.put(username, user);  
                            listModel.addElement(username);  
                        }  
                    } else if (command.equals("DELETE")) {// 有用户下线更新在线列表  
                        String username = stringTokenizer.nextToken();  
                        User user = (User) onLineUsers.get(username);  
                        onLineUsers.remove(user);  
                        listModel.removeElement(username);  
                    } else if (command.equals("USERLIST")) {// 加载在线用户列表  
                        int size = Integer  
                                .parseInt(stringTokenizer.nextToken());  
                        String username = null;  
                        String userIp = null;  
                        for (int i = 0; i < size; i++) {  
                            username = stringTokenizer.nextToken();  
                            userIp = stringTokenizer.nextToken();  
                            User user = new User(username, userIp);  
                            onLineUsers.put(username, user);  
                            listModel.addElement(username);  
                        }  
                    } else if (command.equals("MAX")) {// 人数已达上限  
                        textArea.append(stringTokenizer.nextToken()  
                                + stringTokenizer.nextToken() + "\r\n");  
                        closeCon();// 被动的关闭连接  
                        JOptionPane.showMessageDialog(frame, "服务器缓冲区已满!", "错误",  
                                JOptionPane.ERROR_MESSAGE);  
                        return;// 结束线程  
                    } else {// 普通消息  
                        textArea.append(message + "\r\n");  
                    }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
javaxiaomingxin 2017-06-24
  • 打赏
  • 举报
回复
public class Client{  
  
	
    private JFrame frame;  
    private JList userList;  
    private JTextArea textArea;  
    private JTextArea textField;  
    private JTextField txt_port;  
    private JTextField txt_hostIp;  
    private JTextField txt_name;  
    private JButton btn_start;  
    private JButton btn_stop; 
    
    private JButton btn_send; 
    private JButton tjtpBT;
    private JButton fstpBT;
     private JPanel se;
     
    private JPanel northPanel;  
    private JPanel southPanel;    
    private JScrollPane rightScroll;  
    private JScrollPane leftScroll;  
    private JSplitPane centerSplit;     
    private DefaultListModel listModel;  
    private boolean isConnected = false;    
    private Socket socket;  
    private PrintWriter writer;  
    private BufferedReader reader;  
    private MessageThread messageThread;// 负责接收消息的线程  
    private Map<String, User> onLineUsers = new HashMap<String, User>();// 所有在线用户  
    
    private JTextArea westTextArea;
    JFileChooser jfc;
   
    // 主方法,程序入口  
    public static void main(String[] args) throws IOException {  
        new Client();  
    }  
   
    // 执行发送  
    public void send() {  
        if (!isConnected) {  
            JOptionPane.showMessageDialog(frame, "还没有连接服务器,无法发送消息!", "错误",  
                    JOptionPane.ERROR_MESSAGE);  
            return;  
        }  
        String message = textField.getText().trim();  
        if (message == null || message.equals("")) {  
            JOptionPane.showMessageDialog(frame, "消息不能为空!", "错误",  
                    JOptionPane.ERROR_MESSAGE);  
            return;  
        }  
        sendMessage(frame.getTitle() + "@" + "ALL" + "@" + message);  
        textField.setText(null);  
    }  
    
    
    //发送图片
    public void tpfs() throws Exception{
    	 if (!isConnected) {  
             JOptionPane.showMessageDialog(frame, "还没有连接服务器,无法发送消息!", "错误",  
                     JOptionPane.ERROR_MESSAGE);  
             return;  
         }  
    	 
    	int port = Integer.parseInt(txt_port.getText().trim());  
    	 String hostIp = txt_hostIp.getText().trim();  
    	Socket socket2=new Socket(hostIp,port);
    	 OutputStream out2=socket2.getOutputStream();
    	 //添加图片地址
    	 String dz=jfc.getSelectedFile().getAbsolutePath();
    	
			FileInputStream fis=new FileInputStream(dz);
			byte [] buf2=new byte[1024];
			int len2;
			while((len2=fis.read(buf2))!=-1){
				out2.write(buf2,0,len2);
				
			}
			socket2.shutdownOutput();
			//接受服务器反馈
			InputStream in=socket2.getInputStream();
			byte[] buf3=new byte[1024];
			int num=in.read(buf3);
			String Msg=new String(buf3,0,num);
		System.out.println(Msg);
			fis.close();
		socket2.close();
			
		
    }
   
    // 构造方法  
    public Client() throws IOException {  
        textArea = new JTextArea();  
        textArea.setEditable(false);  
        textArea.setForeground(Color.blue);  
        textField = new JTextArea();  
        txt_port = new JTextField("6666");  
        txt_hostIp = new JTextField("localhost");  
        txt_name = new JTextField("	`");  
        btn_start = new JButton("连接");  
        btn_stop = new JButton("断开"); 
        JEditorPane jEditorPane1 = new JEditorPane();
        btn_send = new JButton("发送"); 
        tjtpBT=new JButton("添加图片"); 
        fstpBT=new JButton("发送图片");
        
        listModel = new DefaultListModel();  
        userList = new JList(listModel);  
   
        northPanel = new JPanel();  
        northPanel.setLayout(new GridLayout(1, 7));  
        northPanel.add(new JLabel("端口"));  
        northPanel.add(txt_port);  
        northPanel.add(new JLabel("服务器IP"));  
        northPanel.add(txt_hostIp);  
        northPanel.add(new JLabel("姓名"));  
        northPanel.add(txt_name);  
        northPanel.add(btn_start);  
        northPanel.add(btn_stop);  
        northPanel.setBorder(new TitledBorder("连接信息"));  
    String vNewReportFileName = "file:///C:/Users/sb/Desktop/123.html";

        jEditorPane1.setPage(vNewReportFileName);
        
      
        rightScroll = new JScrollPane(jEditorPane1);  
        rightScroll.setBorder(new TitledBorder("消息显示区")); 
        //
        leftScroll = new JScrollPane(userList);  
        leftScroll.setBorder(new TitledBorder("在线用户"));  
        southPanel = new JPanel(new BorderLayout());  
        se=new JPanel(new BorderLayout());
      
        se.add(btn_send,"North");
        se.add(tjtpBT,"Center");       
        se.add(fstpBT,"South");
        southPanel.add(textField, "Center");
        southPanel.add(se,"East");
        
        southPanel.setBorder(new TitledBorder("写消息"));  

   
        centerSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftScroll,  
                rightScroll);  
        centerSplit.setDividerLocation(100);  
   
        frame = new JFrame("我的聊天室");  
        // 更改JFrame的图标:  
        frame.setIconImage(Toolkit.getDefaultToolkit().createImage(Client.class.getClassLoader().getResource("")));  
        frame.setLayout(new BorderLayout());  
        frame.add(northPanel, "North");  
        frame.add(centerSplit, "Center");  
        frame.add(southPanel, "South");  
//        frame.add(se, "East"); 
        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);  
   
        // 写消息的文本框中按回车键时事件  
       
   
        // 单击发送按钮时事件  
        btn_send.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                send();  
            }  
        });  
   
        // 单击连接按钮时事件  
        btn_start.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                int port;  
                if (isConnected) {  
                    JOptionPane.showMessageDialog(frame, "已处于连接上状态,不要重复连接!",  
                            "错误", JOptionPane.ERROR_MESSAGE);  
                    return;  
                }  
                try {  
                    try {  
                        port = Integer.parseInt(txt_port.getText().trim()); 
                    } catch (NumberFormatException e2) {  
                        throw new Exception("端口号不符合要求!端口为整数!");  
                    }  
                    String hostIp = txt_hostIp.getText().trim();  
                    String name = txt_name.getText().trim();  
                    if (name.equals("") || hostIp.equals("")) {  
                        throw new Exception("姓名、服务器IP不能为空!");  
                    }  
                    boolean flag = connectServer(port, hostIp, name);  
                    if (flag == false) {  
                        throw new Exception("与服务器连接失败!");  
                    }  
                    frame.setTitle(name);  
                    JOptionPane.showMessageDialog(frame, "成功连接!");  
                } catch (Exception exc) {  
                    JOptionPane.showMessageDialog(frame, exc.getMessage(),  
                            "错误", JOptionPane.ERROR_MESSAGE);  
                }  
            }  
        });  
   
        // 单击断开按钮时事件  
        btn_stop.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                if (!isConnected) {  
                    JOptionPane.showMessageDialog(frame, "已处于断开状态,不要重复断开!",  
                            "错误", JOptionPane.ERROR_MESSAGE);  
                    return;  
                }  
       
}
什么都不能 2017-06-24
  • 打赏
  • 举报
回复
老早以前的163/263聊天室都是用applet做客户端,用js 操作html实现视图的改变,你这个不太了解怎么做。

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧