TRRINITY 2016-10-23 03:13 采纳率: 0%
浏览 828

java实现实验室教师远程学生桌面把jframe改成jpanel

网上找的代码如下 现在是一个一个窗口显示一个桌面 我想把他变成panel然后放在主界面那里(主界面需要监控多个学生的桌面)。。。可是渣渣不会改

package ServerWhat;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.ZipInputStream;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class RemoteMonitored extends JFrame {

private static final long serialVersionUID = 1L;

Dimension screenSize;

public  RemoteMonitored () {  
    super();  
    screenSize = Toolkit.getDefaultToolkit().getScreenSize();  
    this.setSize(800, 640);  
    Screen p = new Screen();  
    Container c = this.getContentPane();  
    c.setLayout(new BorderLayout());  
    c.add(p, SwingConstants.CENTER);  
    new Thread(p).start();  
    SwingUtilities.invokeLater(new Runnable(){  
        public void run() {  
            setVisible(true);  
        }});  
}  

public static void main(String[] args) {  
    new  RemoteMonitored ();  
}  

class Screen extends JPanel implements Runnable {  

    private static final long serialVersionUID = 1L;  
    private Image cimage;  

    public void run() {  
        ServerSocket ss = null;  
        try {  
            ss = new ServerSocket(5001);// 探听5001端口的连接  
            while (true) {  
                Socket s = null;  
                try {  
                    s = ss.accept();  
                    ZipInputStream zis = new ZipInputStream(s  
                            .getInputStream());  
                    zis.getNextEntry();  
                    cimage = ImageIO.read(zis);// 把ZIP流转换为图片  
                    repaint();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                } finally {  
                    if (s != null) {  
                        try {  
                            s.close();  
                        } catch (IOException e) {  
                            e.printStackTrace();  
                        }  
                    }  
                }  
            }  
        } catch (Exception e) {  
        } finally {  
            if (ss != null) {  
                try {  
                    ss.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  

    public Screen() {  
        super();  
        this.setLayout(null);  
    }  

    public void paint(Graphics g) {  
        super.paint(g);  
        Graphics2D g2 = (Graphics2D) g;  
        g2.drawImage(cimage, 0, 0, null);  
    }  
}  

}

  • 写回答

1条回答 默认 最新

  • TRRINITY 2016-10-23 03:11
    关注

    因为这个窗口跟套接字建立放在一起了 可以把他们分开 然后在主界面出现之前套接字建立 让远程桌面的图案在主界面某一panel显示吗

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog