📄 welcome.java
字号:
import javax.swing.JPanel;
import java.awt.Graphics;
import java.net.Socket;
import java.awt.Color;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.awt.image.BufferedImage;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.io.Serializable;
public class Welcome extends JPanel implements Runnable{
private Socket client;
private String host;
private int port;
private ObjectInputStream input;
private ObjectOutputStream output;
private boolean isRuning = true;
//判断连接
private boolean isConnected = false;
private BufferedImage image;
private int pw = 1024;
private int ph = 768;
public Welcome(String host,String port){
this.host = host;
this.setPreferredSize(new Dimension(1024,768));
this.enableEvents(MouseEvent.MOUSE_EVENT_MASK);
this.enableEvents(MouseEvent.MOUSE_MOTION_EVENT_MASK);
this.enableEvents(MouseEvent.MOUSE_WHEEL_EVENT_MASK);
try{
this.port = Integer.parseInt(port);
isConnected = connect();
if(isConnected){
new Thread(this).start();
isConnected = false;
}
else
this.cancel();
}
catch(Exception e){
this.cancel();
}
}
public boolean connect(){
try{
client = new Socket(host,port);
}
catch(Exception e){
return false;
}
return true;
}
public void noconnection(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(0,0,this.getWidth(),this.getHeight());
g.setColor(Color.RED);
g.drawString("没有接收到任何图象",this.getWidth()/2,this.getHeight()/2);
g.setColor(Color.BLACK);
}
public void paintComponent(Graphics g){
if(isRuning == false)
noconnection(g);
else if(isConnected){
g.drawImage(image, 0, 0, pw, ph, null);
}
else{
noconnection(g);
}
}
public void readImage(BufferedImage image,int[] str){
int count=4;
System.out.println(str[0]+" "+str[1]+" "+str[2]+" "+str[3]);
for(int y=str[1];y<=str[3];y++)
for(int x=str[0];x<=str[2];x++){
image.setRGB(x,y,str[count]);
count = count+1;
}
}
public void run(){
isConnected = true;
try{
input = new ObjectInputStream(client.getInputStream());
output = new ObjectOutputStream(client.getOutputStream());
image = new BufferedImage(pw,ph,BufferedImage.TYPE_INT_RGB);
while(isRuning){
//读数据
System.out.println("ok");
int[] index = (int[])input.readObject();
System.out.println("长度:"+index.length);
this.readImage(image,index);
repaint();
for(int i=0;i<10;i++)
System.gc();
Thread.sleep(100);
}
}
catch(Exception e){
System.out.println("异常:"+e.toString());
e.printStackTrace();
this.cancel();
}
}
public void cancel(){
try{
isRuning = false;
repaint();
if(input != null)
input.close();
if(client != null)
client.close();
}catch(Exception e){
System.exit(0);
}
}
protected void processMouseEvent(MouseEvent e){
switch(e.getID()){
//鼠标单击事件
case 500:
produse(500,e.getModifiers(),e.getX(),e.getY());
break;
}
}
public void produse(int action,int mode,int x,int y){
int[] str = {action,mode,x,y};
writeOrder(str);
}
private void writeOrder(int[] key){
try{
output.writeObject(key);
output.flush();
}
catch(Exception exception){
this.cancel();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -