Genera Log 7 e mezzo
Aug 20
//Classe Master per la lavagna
 
//classi supplementari importate
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;
//classe gestore eventi mouse
class Mouse extends MouseInputAdapter{
	Lavagna lav;
	int x;
	int y;
	int px;
	int py;
	Color col;
	public Mouse(Lavagna lavApp,Color color){
		lav=lavApp;
		col=color;
		x=0;
		y=0;
		px=0;
		py=0;
	}
	public void mouseReleased(MouseEvent e){
		px=0;
		py=0;
		x=0;
		y=0;
	}
	public void mouseDragged(MouseEvent e){
		x=e.getX();
		y=e.getY();
		if((px!=0)&&(px!=0)){
			if(MasterGraph.sts){
				lav.erase(px,py,x,y);
			}else{
				lav.draw(px,py,x,y,col);
			}
			MasterGraph.sendPoint(""+px+"_"+py+"_"+x+"_"+y+"_*");
		}
		px=x;
		py=y;
	}
	public void setColor(Color color){
		col=color;
	}
}
// classe finta per catturare l' oggetto Image
class Finta extends Applet{
	public void init(){
		setBackground(Color.white);
	}
 
}
// classe lavagna elettronica
class Lavagna extends Canvas{
	int px;
	int py;
	int x;
	int y;
	Color col;
	Graphics g;
	Image im;
	public Lavagna(){
		px=0;
		py=0;
		x=0;
		y=0;
		col=Color.black;
	}
	public void initG(Finta applet,int x,int y){
		im = applet.createImage(x,y);
		g = im.getGraphics();
	}
	public void draw(int px,int py,int x,int y,Color col){
		this.px=px;
		this.py=py;
		this.x=x;
		this.y=y;
		this.col=col;
		g.setColor(col);
		g.drawLine(px,py,x,y);
		repaint();
	}
	public void erase(int px,int py,int x,int y){
		g.setColor(Color.white);
		g.drawLine(px,py,x,y);
		repaint();
	}
	public void paint(Graphics g){
		g.drawImage(im,0,0,this);
	}
}
// classe principale
public class MasterGraph extends JFrame{
	static Lavagna lavagna;
	Mouse mouse;
	Color color;
	static DatagramPacket pOut;
	static MulticastSocket mcSock;
	static InetAddress ia;
	JButton bRed;
	JButton bBlack;
	JButton bBlue;
	JButton bYellow;
	JButton bMagenta;
	JButton bGreen;
	JButton bGray;
	JButton bOrange;
	JButton bPink;
	JButton bCyan;
	JButton jbuSelected;
	JToggleButton jtbStatus;
	static boolean sts;
	public MasterGraph(String title){
		super(title);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300,300);
		setResizable(false);
		try{
			mcSock=new MulticastSocket(2000);
		}catch(IOException e){
			JOptionPane.showMessageDialog(null,"Impossibile aprire porta 2000!nIl programma verrà terminato.");
			System.exit(0);
		}
		sts=false;
		color=Color.black;
		jtbStatus=new JToggleButton("P");
		jtbStatus.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if(jtbStatus.isSelected()){
					jtbStatus.setText("E");
					sts=true;
					sendStatus(1);
				}else{
					jtbStatus.setText("P");
					sts=false;
					sendStatus(0);
				}
			}
		});
		JPanel jpaStatus=new JPanel();
		jpaStatus.add(jtbStatus);
		jbuSelected=new JButton();
		jbuSelected.setBackground(color);
		JPanel jpa=new JPanel();
		jpa.add(jbuSelected);
		bRed=new JButton();
		bRed.setBackground(Color.red);
		bRed.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bRed.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bBlue=new JButton();
		bBlue.setBackground(Color.blue);
		bBlue.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bBlue.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bBlack=new JButton();
		bBlack.setBackground(Color.black);
		bBlack.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bBlack.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bGray=new JButton();
		bGray.setBackground(Color.gray);
		bGray.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bGray.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bGreen=new JButton();
		bGreen.setBackground(Color.green);
		bGreen.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bGreen.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bMagenta=new JButton();
		bMagenta.setBackground(Color.magenta);
		bMagenta.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bMagenta.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bOrange=new JButton();
		bOrange.setBackground(Color.orange);
		bOrange.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bOrange.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bPink=new JButton();
		bPink.setBackground(Color.pink);
		bPink.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bPink.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bYellow=new JButton();
		bYellow.setBackground(Color.yellow);
		bYellow.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bYellow.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		bCyan=new JButton();
		bCyan.setBackground(Color.cyan);
		bCyan.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				color=bCyan.getBackground();
				jbuSelected.setBackground(color);
				mouse.setColor(color);
				sendColor();
			}
		});
		JPanel pColor=new JPanel();
		pColor.setLayout(new GridLayout(2,5));
		pColor.add(bBlack);
		pColor.add(bBlue);
		pColor.add(bRed);
		pColor.add(bGray);
		pColor.add(bGreen);
		pColor.add(bMagenta);
		pColor.add(bOrange);
		pColor.add(bPink);
		pColor.add(bYellow);
		pColor.add(bCyan);
		JPanel panel=new JPanel();
		panel.add(jpaStatus);
		panel.add(jpa);
		panel.add(pColor);
		lavagna= new Lavagna();
		Dimension dim=this.getToolkit().getScreenSize();
		lavagna.setBackground(Color.white);
		Finta f = new Finta();
		f.init();
		Container contentPane=getContentPane();
		contentPane.add(f,"Center");
		contentPane.add(panel,"South");
		setVisible(true);
		lavagna.initG(f,dim.width,dim.height-60);
		contentPane.remove(f);
		contentPane.add(lavagna);
		contentPane.validate();
		mouse=new Mouse(lavagna,color);
		lavagna.addMouseMotionListener(mouse);
		lavagna.addMouseListener(mouse);
	}
	public void sendStatus(int idx){
		try{
			String s=null;
			if(idx==1){
				s=":1";
			}else if(idx==0){
				s=":0";
			}else{
				s=":0";
			}
			pOut=new DatagramPacket(s.getBytes(),s.length(),ia.getLocalHost(),2000);
			mcSock.send(pOut);
		}catch(SocketException se){
			System.out.print(se.getMessage());
		}catch(IOException ioe){
			System.out.print(ioe.getMessage());
		}
	}
	public void sendColor(){
		try{
			String s=":"+color.getRGB();
			pOut=new DatagramPacket(s.getBytes(),s.length(),ia.getLocalHost(),2000);
			mcSock.send(pOut);
		}catch(SocketException se){
			System.out.print(se.getMessage());
		}catch(IOException ioe){
			System.out.print(ioe.getMessage());
		}
	}
	public static void sendPoint(String sApp){
		try{
			System.out.print(sApp+"n");
			String s="
 
:"+sApp;
			pOut=new DatagramPacket(s.getBytes(),s.length(),ia.getLocalHost(),2000);
			mcSock.send(pOut);
		}catch(SocketException se){
			System.out.print(se.getMessage());
		}catch(IOException ioe){
			System.out.print(ioe.getMessage());
		}
	}
	public static void main(String[] args){
		MasterGraph frame=new MasterGraph("MasterGraph");
	}
}
 
// Classe slave per lavagna elettronica
 
// classi supplementari importate
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
import java.applet.*;
// classe finta per catturare l' oggetto Image
class Finta extends Applet{
	public void init(){
		setBackground(Color.white);
	}
 
}
// classe lavagna elettronica
class Lavagna extends Canvas{
	int px;
	int py;
	int x;
	int y;
	Color col;
	Graphics g;
	Image im;
	public Lavagna(){
		px=0;
		py=0;
		x=0;
		y=0;
		col=null;
	}
	public void initG(Finta applet,int x,int y){
		im = applet.createImage(x,y);
		g = im.getGraphics();
	}
	public void draw(int px,int py,int x,int y,Color col){
		this.px=px;
		this.py=py;
		this.x=x;
		this.y=y;
		this.col=col;
		g.setColor(col);
		g.drawLine(px,py,x,y);
		repaint();
	}
	public void erase(int px,int py,int x,int y){
		g.setColor(Color.white);
		g.drawLine(px,py,x,y);
		repaint();
	}
	public void paint(Graphics g){
		g.drawImage(im,0,0,this);
	}
 
}
// classe principale
public class SlaveGraph extends JFrame implements Runnable{
	Color color;
	DatagramPacket pIn;
	MulticastSocket mcSock;
	Lavagna lavagna;
	boolean sts;
	public SlaveGraph(String title){
		super(title);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocation(400,300);
		setSize(300,260);
		setResizable(false);
		try{
			mcSock=new MulticastSocket(2000);
		}catch(IOException e){
			JOptionPane.showMessageDialog(null,"Impossibile aprire porta 2000!nIl programma verrà terminato.");
			System.exit(0);
		}
		sts=false;
		color=Color.black;
		lavagna= new Lavagna();
		Dimension dim=this.getToolkit().getScreenSize();
		lavagna.setBackground(Color.white);
		Finta f = new Finta();
		f.init();
		Container contentPane=getContentPane();
		contentPane.add(f,"Center");
		setVisible(true);
		lavagna.initG(f,dim.width,dim.height);
		contentPane.remove(f);
		contentPane.add(lavagna);
		contentPane.validate();
		new Thread(this).start();
	}
	public int choose(String sApp){
		if(sApp.equals(":")){
			return 1;
		}else if(sApp.equals(":")){
			return 2;
		}else if(sApp.equals(":")){
			return 3;
		}else if(sApp.equals("
 
:")){
			return 0;
		}else return 4;
	}
	public synchronized void draw(String sApp){
		int[] vet=new int[4];
		char[] bf=sApp.toCharArray();
		String app="";
		String s="";
		int count=0;
		for(int i=0;i
			s=""+bf[i];
			if(s.equals("_")){
				try{
					vet[count]=Integer.parseInt(app);
					app="";
					count++;
				}catch(NumberFormatException nfe){
					System.out.print(nfe.getMessage());
				}
			}else if(s.equals("*")){
				System.out.print(""+vet[0]+","+vet[1]+","+vet[2]+","+vet[3]+"n");
				if((vet[0]!=0)&&(vet[1]!=0)){
					if(sts){
						lavagna.erase(vet[0],vet[1],vet[2],vet[3]);
					}else{
						lavagna.draw(vet[0],vet[1],vet[2],vet[3],color);
					}
				}
			}else{
				app+=bf[i];
			}
		}
	}
	public void run(){
		while(true){
			try{
				pIn=new DatagramPacket(new byte[1024],1024);
				mcSock.receive(pIn);
				String app=new String(pIn.getData(),0,pIn.getLength());
				switch(choose(app.substring(0,4))){
					case 0:
						draw(app.substring(4,app.length()));
						break;
					case 1:
						String s=app.substring(4,app.length());
						try{
							color=new Color(Integer.parseInt(s));
						}catch(NumberFormatException nfe){
							color=Color.black;
						}
						break;
					case 2:
						break;
					case 3:
						try{
							int stat=Integer.parseInt(app.substring(4,app.length()));
							if(stat==1){
								sts=true;
							}else if(stat==0){
								sts=false;
							}else if(stat==2){
								// erase all;
								sts=false;
							}else{
								sts=false;
							}
						}catch(NumberFormatException nfe){
						}
						break;
					case 4:
						break;
				}
			}catch(IOException ioe){
			}
		}
	}
	public static void main(String[] args){
		SlaveGraph frame=new SlaveGraph("SlaveGraph");
	}
}

(Nessun voto)
Loading ... Loading ...

Inserisci il tuo Commento:

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)

You must read and type the 5 chars within 0..9 and A..F, and submit the form.

  

Oh no, I cannot read this. Please, generate a