⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingwindow.java

📁 JAVA画图板
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	        else if(actionCommand.equals("铅笔")){
	            l=0;
	        }
	        else if(actionCommand.equals("橡皮")){
	            l=1;
	        }
	        else if(actionCommand.equals("圆")){
	            l=2;
	        }
	        else if(actionCommand.equals("方")){
	            l=3;
	        }	
	        else if(actionCommand.equals("实心圆")){
	            l=4;
	        }
	        else if(actionCommand.equals("实心方")){
	            l=5;
	        }
	        else if(actionCommand.equals("直线")){
	            l=6;
	        }
	        else if(actionCommand.equals("清空")){
                ef.clear();
                cc.clear();
                tf.clear();
                mm=0;
                qp=0;
                i=0;
                repaint();
	        }
	        else if(actionCommand.equals("打开")){
	        	open.setVisible(true); 

	        	if(open.getFile()!=null) 
	        	{ 
	        	try{ 
	        	ef.clear();
	            cc.clear();
	            tf.clear();
	        	File filein = new File(open.getDirectory(),open.getFile()); 
	        	picIn = new FileInputStream(filein); 
	        	VIn = new ObjectInputStream(picIn); 
	        	tf = (ArrayList<Shape>)VIn.readObject();
	        	cc = (ArrayList<Color>)VIn.readObject();
	        	ef = (ArrayList<Integer>)VIn.readObject();
	        	VIn.close();
	        	i=tf.size();
	        	qp=ef.size();
	        	mm=cc.size();
	        	repaint();  
	        	} 

	        	catch(ClassNotFoundException IOe2) 
	        	{  
	        	System.out.println("can not read object"); 
            	} 
	        	catch(IOException IOe) 
	        	{  
	        	System.out.println("can not read file"); 
	        	}
	        	}
	        	 
	        }
	        else if(actionCommand.equals("保 存")){
	        	save.setVisible(true); 
	        	try{ 
	        	File fileout = new File(save.getDirectory(),save.getFile()); 
	        	picOut = new FileOutputStream(fileout); 
	        	VOut = new ObjectOutputStream(picOut); 
	        	VOut.writeObject(tf);
	        	VOut.writeObject(cc);
	        	VOut.writeObject(ef);
	        	VOut.close(); 
	        	} 
	        	catch(IOException IOe) 
	        	{ 
	        	System.out.println("can not write object"); 
	        	} 

	        }
		}	
		
		private class NewPanel 
		                 extends JPanel{
			private Color owncolor;
			public NewPanel(){
				addMouseListener(new MouseAdapter(){
					public void mousePressed(MouseEvent e){
						color=owncolor;
					}
				});
				this.setCursor(new Cursor(Cursor.HAND_CURSOR));

			}
			public void background(Color b){
				owncolor=b;
				setBackground(b);
			}
		}
		private class LTJL{
			private PrintWriter outputStream=null;
			public LTJL(){
				String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
				try{
					outputStream=
						new PrintWriter(new FileOutputStream("聊天记录"+date));
				}
				catch(FileNotFoundException e){
					System.out.println("Error!can not save!");
		//			System.exit(0);
				}
			}
			public void save(String l){
				outputStream.println(l);
				outputStream.close();	
			}
		}
	//huantuban
		private class HuaTuPanel extends JPanel {
		  
		   public HuaTuPanel(){
			   ef=new ArrayList<Integer>();
			   tf=new ArrayList<Shape>();
			   cc=new ArrayList<Color>();
			   addMouseListener(new MouseHandler());
			   addMouseMotionListener(new MouseMotionHandler());
				   
			   
		   }
		   public void paintComponent(Graphics g){
			   Graphics2D g2 = (Graphics2D) g;
			   super.paintComponent(g);		   
			  
			   
			   for (int i=0;i<tf.size();i++){
				   Shape s=(Shape)tf.get(i);
				   g2.setPaint(cc.get(i));
				   Integer v=ef.get(i);
				   if(v.intValue()==0){
					   g2.draw(s);
				   }
				   else if(v.intValue()==1){
					   g2.fill(s);    
				   }
				   else{
					   BasicStroke size = new BasicStroke(11,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
					   g2.setStroke(size);
					   g2.draw(s);
					   size = new BasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
					   g2.setStroke(size);
				   }
				   
			   }  
			  
		   }   
		}
		
		private class MouseHandler extends MouseAdapter{
			public void mousePressed(MouseEvent e){
				st=e.getPoint();
        	} 
		    public void mouseReleased(MouseEvent e){
		    	en=e.getPoint();
		    	switch(l){
		    	case 2:
		    		double a=en.getX();double b=en.getY();
					double c=st.getX();double d=st.getY();
				    double m=Math.min(a,c);double n=Math.min(b,d);
		    		Ellipse2D r=new Ellipse2D.Double(m,n,Math.abs(c-a),Math.abs(d-b));
		    		tf.set(i,r);
		    		i++;
					repaint();
					flag=true;
					break;
		    	case 3:
		    		double a1=en.getX();double b1=en.getY();
					double c1=st.getX();double d1=st.getY();
				    double m1=Math.min(a1,c1);double n1=Math.min(b1,d1);
					Rectangle2D ell=new Rectangle2D.Double(m1,n1,Math.abs(c1-a1),Math.abs(d1-b1));
					tf.set(i,ell);
		    		i++;
					repaint();
					flag1=true;
					break;
		    	case 4:
		    		double a2=en.getX();double b2=en.getY();
					double c2=st.getX();double d2=st.getY();
				    double m2=Math.min(a2,c2);double n2=Math.min(b2,d2);
				    Ellipse2D rr=new Ellipse2D.Double(m2,n2,Math.abs(c2-a2),Math.abs(d2-b2));
				    tf.set(i,rr);
		    		i++;
					repaint();
					flag2=true;
					break;
		    	case 5:
		    		double a3=en.getX();double b3=en.getY();
					double c3=st.getX();double d3=st.getY();
				    double m3=Math.min(a3,c3);double n3=Math.min(b3,d3);
				    Rectangle2D rre=new Rectangle2D.Double(m3,n3,Math.abs(c3-a3),Math.abs(d3-b3));
				    tf.set(i,rre);
		    		i++;
					repaint();
					flag3=true;
					break;

		    	case 6:
		    		Line2D lll=new Line2D.Double(st,en);
		    		tf.set(i,lll);
		    		i++;
					repaint();
					flag4=true;
					break;
		    	}
		    }	
		}
		
		private class MouseMotionHandler implements MouseMotionListener{
			public void mouseMoved(MouseEvent e){
				
			}
			public void mouseDragged(MouseEvent e){
				switch (l){
				case 0:
					ef.add(new Integer(0));
					qp++;
				    Line2D li=new Line2D.Double(st,e.getPoint());
				    tf.add(li);
				    i++;
				    cc.add(color);
				    mm++;
				    repaint();
					st=e.getPoint();
				    break;
				case 1:
					ef.add(new Integer(2));
					qp++;
					Line2D el=new Line2D.Double(st,e.getPoint());
					tf.add(el);
					i++;
					cc.add(Color.WHITE);
					mm++;
					repaint();
					st=e.getPoint();
					break;	
				case 2:
					
					Point2D end=e.getPoint();
					double a=end.getX();double b=end.getY();
					double c=st.getX();double d=st.getY();
				    double m=Math.min(a,c);double n=Math.min(b,d);
				    Ellipse2D r=new Ellipse2D.Double(m,n,Math.abs(c-a),Math.abs(d-b));
				    if(flag){
				    	tf.add(r);
				    	cc.add(color);mm++;
				    	ef.add(new Integer(0));
						qp++;
				    	flag=false;
				    }
				    else
				    	tf.set(i,r);
				    repaint();
					break;
				case 3:
					Point2D nd=e.getPoint();
					double a1=nd.getX();double b1=nd.getY();
					double c1=st.getX();double d1=st.getY();
				    double m1=Math.min(a1,c1);double n1=Math.min(b1,d1);
					Rectangle2D ell=new Rectangle2D.Double(m1,n1,Math.abs(c1-a1),Math.abs(d1-b1));
					if(flag1){
				    	tf.add(ell);
				    	cc.add(color);mm++;
				    	ef.add(new Integer(0));
						qp++;
				    	flag1=false;
				    }
				    else
				    	tf.set(i,ell);
					repaint();
					break;
				case 4:
					Point2D ed=e.getPoint();
					double a2=ed.getX();double b2=ed.getY();
					double c2=st.getX();double d2=st.getY();
				    double m2=Math.min(a2,c2);double n2=Math.min(b2,d2);
				    Ellipse2D rr=new Ellipse2D.Double(m2,n2,Math.abs(c2-a2),Math.abs(d2-b2));
				    if(flag2){
				    	tf.add(rr);
				    	cc.add(color);mm++;
				    	ef.add(new Integer(1));
						qp++;
				    	flag2=false;
				    }
				    else
				    	tf.set(i,rr);
					repaint();
					break;
				case 5:
					Point2D ee=e.getPoint();
					double a3=ee.getX();double b3=ee.getY();
					double c3=st.getX();double d3=st.getY();
				    double m3=Math.min(a3,c3);double n3=Math.min(b3,d3);
				    Rectangle2D rre=new Rectangle2D.Double(m3,n3,Math.abs(c3-a3),Math.abs(d3-b3));
				    if(flag3){
				    	tf.add(rre);
				    	cc.add(color);mm++;
				    	ef.add(new Integer(1));
						qp++;
				    	flag3=false;
				    }
				    else
				    	tf.set(i,rre);
					repaint();
					break;
				case 6:
					Point2D llp=e.getPoint();
					Line2D ll=new Line2D.Double(st,llp);              
					if(flag4){
				    	tf.add(ll);
				    	cc.add(color);mm++;
				    	ef.add(new Integer(0));
						qp++;
				    	flag4=false;
				    }
				    else
				    	tf.set(i,ll);
				    repaint();
					break;
				}
			}
		}
		
		private class ConfirmWindow extends JFrame implements ActionListener
	    {
	        public static final int WIDTH = 200;
	        public static final int HEIGHT = 100;

	        public ConfirmWindow( )
	        {
	        	setSize(WIDTH, HEIGHT);
	            Container confirmContent = getContentPane( );
	            confirmContent.setBackground(Color.WHITE);
	            confirmContent.setLayout(new BorderLayout( ));

	            JLabel msgLabel = new JLabel("                   确定要退出?");
	            confirmContent.add(msgLabel, BorderLayout.CENTER);

	            JPanel buttonPanel = new JPanel( );
	            buttonPanel.setLayout(new FlowLayout( ));

	            JButton exitButton = new JButton("是");
	            exitButton.addActionListener(this);
	            buttonPanel.add(exitButton);

	            JButton cancelButton = new JButton("否");
	            cancelButton.addActionListener(this);
	            buttonPanel.add(cancelButton);

	            confirmContent.add(buttonPanel, BorderLayout.SOUTH);
	        }

	        public void actionPerformed(ActionEvent e) 
	        {
	            if (e.getActionCommand( ).equals("是")) {
	            	
	            	System.exit(0);
	            }
	            else if (e.getActionCommand( ).equals("否"))
	                dispose();
	            else
	                System.out.println("Error in Confirm Window.");
	        }
	   }
		

		
	}
	   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -