|
@@ -1,5 +1,7 @@
|
|
|
package com.sziit.G06.controller;
|
|
|
|
|
|
+import com.sziit.G06.controller.MyException;
|
|
|
+
|
|
|
import javax.imageio.ImageIO;
|
|
|
import javax.swing.*;
|
|
|
import java.awt.*;
|
|
@@ -18,14 +20,15 @@ import java.io.ObjectOutputStream;
|
|
|
|
|
|
public class Controller extends Thread {
|
|
|
|
|
|
- private java.io.DataInputStream dis;//读视频流对象
|
|
|
- private java.io.ObjectOutputStream ous;//写事件流
|
|
|
- private javax.swing.JLabel la_image = new javax.swing.JLabel();
|
|
|
+ private DataInputStream dis;//读视频流对象
|
|
|
+ private ObjectOutputStream ous;//写事件流
|
|
|
+ private JLabel la_image = new JLabel();
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* 显示页面
|
|
|
*/
|
|
|
- public void showUI() {
|
|
|
+ public void showUI(String ip,int port,String idname) {
|
|
|
|
|
|
//////发现鼠标不能精准定位的问题:
|
|
|
|
|
@@ -51,12 +54,16 @@ public class Controller extends Thread {
|
|
|
//1.设置远程控制页面
|
|
|
|
|
|
//设置远程控制窗口的标题
|
|
|
- javax.swing.JFrame frame=new javax.swing.JFrame("远程控制"); //-----问题所在:存在任务栏高度差!
|
|
|
+ JFrame frame=new JFrame("远程控制"); //-----问题所在:存在任务栏高度差!
|
|
|
// frame.setSize(1920,1080);
|
|
|
+ //设置远程控制窗口标题
|
|
|
+
|
|
|
//设置远程控制屏幕大小,整个屏幕高度(包含任务栏高度)
|
|
|
frame.setSize(w,h);
|
|
|
//设置远程控制屏幕可见
|
|
|
frame.setResizable(false);
|
|
|
+
|
|
|
+ frame.setTitle(ip +" 端口:" + port+" 被控制端名字:"+idname);
|
|
|
//设置被控制端屏幕大小,不包含任务栏高度
|
|
|
la_image.setSize(w1, h1);
|
|
|
JLayeredPane jlp = new JLayeredPane();
|
|
@@ -73,13 +80,13 @@ public class Controller extends Thread {
|
|
|
|
|
|
//2.监听键盘事件并处理
|
|
|
frame.addKeyListener(new KeyAdapter(){
|
|
|
- public void keyPressed(KeyEvent e) {
|
|
|
- sendEventObject(e);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void keyReleased(KeyEvent e) {
|
|
|
- sendEventObject(e);
|
|
|
- }
|
|
|
+ public void keyPressed(KeyEvent e) {
|
|
|
+ sendEventObject(e);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void keyReleased(KeyEvent e) {
|
|
|
+ sendEventObject(e);
|
|
|
+ }
|
|
|
@Override
|
|
|
public void keyTyped(KeyEvent e) {
|
|
|
}
|
|
@@ -122,7 +129,7 @@ public class Controller extends Thread {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-//连接服务端
|
|
|
+ //连接服务端
|
|
|
private void connectToServer(String ip,int port)
|
|
|
throws Exception{
|
|
|
|
|
@@ -135,10 +142,10 @@ public class Controller extends Thread {
|
|
|
if(dis==null||ous==null)throw new MyException("远程控制不接受或未接受被控制。。。");
|
|
|
|
|
|
}
|
|
|
- //将控制端所侦听到的事件封装成InputEvent类,用对象输出流发送到被控制端。
|
|
|
+ //将控制端所侦听到的事件封装成InputEvent类,用对象输出流发送到被控制端。
|
|
|
|
|
|
//发送事件对象到被控制端
|
|
|
- private void sendEventObject(java.awt.event.InputEvent event){
|
|
|
+ private void sendEventObject(InputEvent event){
|
|
|
try{
|
|
|
ous.writeObject(event);
|
|
|
|
|
@@ -154,7 +161,7 @@ public class Controller extends Thread {
|
|
|
try{
|
|
|
//读取图片数据
|
|
|
while(true){
|
|
|
- //图片长度
|
|
|
+ //图片长度
|
|
|
int len=dis.readInt();
|
|
|
//把数据储存在字节数组
|
|
|
byte[] data=new byte[len];
|
|
@@ -165,8 +172,8 @@ public class Controller extends Thread {
|
|
|
ByteArrayInputStream bins=new ByteArrayInputStream(data);
|
|
|
BufferedImage image= ImageIO.read(bins);
|
|
|
|
|
|
- //将读到的数据生成为一个图标对象
|
|
|
- javax.swing.ImageIcon ic=new ImageIcon(image);
|
|
|
+ //将读到的数据生成为一个图标对象
|
|
|
+ ImageIcon ic=new ImageIcon(image);
|
|
|
Image img = ic.getImage();
|
|
|
|
|
|
// 2.根据屏幕设定图片的大小
|
|
@@ -191,7 +198,7 @@ public class Controller extends Thread {
|
|
|
|
|
|
}
|
|
|
|
|
|
-//从被控制端传输的图片在控制端实现回放
|
|
|
+ //从被控制端传输的图片在控制端实现回放
|
|
|
private static BufferedImage resize(Image img, int newW, int newH) {
|
|
|
//设置在控制端回放的图片大小
|
|
|
int w = img.getWidth(null);
|
|
@@ -201,7 +208,7 @@ public class Controller extends Thread {
|
|
|
|
|
|
Graphics2D g = dimg.createGraphics();
|
|
|
//Graphics2D属于Graphics 类,
|
|
|
- // 提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。
|
|
|
+ // 提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。
|
|
|
// 它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。
|
|
|
|
|
|
//设置模式
|
|
@@ -224,11 +231,11 @@ public class Controller extends Thread {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
|
|
|
- public static void connect(String ip,int port) throws Exception{
|
|
|
+ public static void connect(String ip,int port,String idname) throws Exception{
|
|
|
//1.创建对象
|
|
|
Controller ct=new Controller();
|
|
|
//2.建立显示界面,showUI()实现
|
|
|
- ct.showUI();
|
|
|
+ ct.showUI(ip,port,idname);
|
|
|
//3.连接被控端,私有方法connectToServer(ip,port)实现
|
|
|
ct.connectToServer(ip,port);
|
|
|
//4.启动线程,start()方法
|
|
@@ -236,5 +243,3 @@ public class Controller extends Thread {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
-
|