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

📄 mypaint.java

📁 Java画板
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        			
        		}
        		public void focusLost(FocusEvent e2)
        		{
        			
        		}
        	}
        );
        
         // 在drawPanel加上滚动条,总显示滚动条
         
        scrollpanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollpanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollpanel.setVerifyInputWhenFocusTarget( true );
        scrollpanel.getViewport().add( drawPanel );
        
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.anchor = GridBagConstraints.NORTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new Insets(10, 5, 5, 5);
        ctrlPanel.add( mediumPanel1, gridBagConstraints );
        
        //在底部显示日期
        copyleft.setFont( new Font( "Verdana", 0, 15 ) );
        copyleft.setForeground( new Color( 255, 153, 0 ) );
        copyleft.setText( "2007-6-17" );
        
        //界面的排放
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = GridBagConstraints.SOUTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new Insets(5, 5, 15, 5);
        ctrlPanel.add( copyleft, gridBagConstraints );
        
        getContentPane().add( menuBar, BorderLayout.NORTH );
        getContentPane().add( ctrlPanel, BorderLayout.WEST );

        getContentPane().add( scrollpanel, BorderLayout.CENTER );
        getContentPane().add( state, BorderLayout.SOUTH );

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds( ( screenSize.width - 786 ) / 2, ( screenSize.height - 578 ) / 2, 786, 680 );
        setVisible( true );
    }//GEN-END:initComponents
	
	/**
	 * 前景色
	 * @param evt
	 */
	private void foregroundItemActionPerformed( ActionEvent evt )
	{
		Color color =  JColorChooser.showDialog( this, "Change Drawing Color",drawPanel.getForeground() );
		if( color != null )
			drawPanel.setForeground( color );
		
	}
	
	/**
	 * 背景色
	 * @param evt
	 */
	private void backgroundItemActionPerformed( ActionEvent evt )
	{
		Color color =  JColorChooser.showDialog( this, "Change Drawing Color",drawPanel.getBackground() );
		if( color != null )
			drawPanel.setBackground( color );
		
	}
	
	/**
	 * 清除
	 * @param evt
	 */
	private void clearItemActionPerformed( ActionEvent evt )
	{
		drawPanel.clearBoard();
	}
	
     
	 /**
	 * 作者:钟雯
	 * 实现文字格式,大小,类型的选择功能
	 *  初始时间:2007 5-20
	 * 最后一次修改时间:2007 6-13
	 */
	
	  /**
      * 
      * 文字的字体类型处理
      *
      */
	  private class CheckBoxHandler implements ItemListener
    {
    	public void itemStateChanged(ItemEvent e)
    	{
    		if(e.getSource()==bold)
    			if(e.getStateChange()==ItemEvent.SELECTED)
    				x1=Font.BOLD;
    			else
    				x1=Font.PLAIN;
    		if(e.getSource()==italic)
    			if(e.getStateChange()==ItemEvent.SELECTED)
    				x2=Font.ITALIC;
    			else
    				x2=Font.PLAIN;
    		drawPanel.setStyle2( x1, x2 );		
    	}
    }
	  
    	/**
    	 * 关于对话框
    	 * @param e
    	 */	
	   void jmAbout_actionPerformed(ActionEvent e) {
		   
		    new DialogAbout( this, drawimage, "DrawPane \n作者:\t学号\n钟雯\t391\n王珍\t438\n曾燕秋\t488"
		                    ).show();
		  }
	  
	   
	   /**
		 * 作者:钟雯
		 * 实现文件的新建功能
		 *  初始时间:2007 5-20
		 * 最后一次修改时间:2007 6-13
		 */
		
	   /**
	    * 新建
	    * @param evt
	    */
	  private void newButtonActionPerformed( ActionEvent evt)
		{
		  //若画板上有图形,判断是否要保存
			int select = JOptionPane.showOptionDialog(this, "是否保存当前文件?", "",
			                                                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
			
			 //若想保存则调用保存事件的方法    
		    if( select ==0 )
		    	saveButtonActionPerformed(evt);
			
			//若不想,则清除图象
		    else if( select ==3 )
		    	return ;
		    clearItemActionPerformed( evt );
		    
		    	
		}
		
	  /**
		 * 作者:钟雯 曾燕秋
		 * 实现文件的打开和存储
		 *  初始时间:2007 5-20
		 * 最后一次修改时间:2007 6-13
		 */
		
	  
	  /**
	   * 打开
	   * @param evt
	   */
		 private void loadButtonActionPerformed( ActionEvent evt) {
		        
			 //若图板不是空的则判断是否要保存
			 if (!drawPanel.isEmpty()) {
			      int select = JOptionPane.showOptionDialog(this, "是否保存当前文件?", "",
			                                                JOptionPane.
			                                                YES_NO_CANCEL_OPTION,
			                                            JOptionPane.INFORMATION_MESSAGE, null, null, null);
                //回答若肯定,则调用保存事件的方法    
			      if (select == 0) {
			    	  saveButtonActionPerformed( evt) ;
			      }
			      //若否定则覆盖原来的图形
			      else if (select == 2) {
			        return;
			      }
			    }
			 try {
		            if (filechooser1 == null) {
		                filechooser1 = new JFileChooser();
		                filechooser1.setFileFilter(myFilter);
		                
		                filechooser1.setMultiSelectionEnabled(true);
		                filechooser1.setAcceptAllFileFilterUsed(true);
		                filechooser1.setFileFilter( jpgFilter );
		            }
		            int result = filechooser1.showOpenDialog(this);
		            String temp;
		            if (result != JFileChooser.APPROVE_OPTION)
		                return;
		            File file = filechooser1.getSelectedFile();
		            
		            //打开的图形为自定义的格式
		            if( file.getName().toLowerCase().endsWith( ".zzw" ))
		            {
		            BufferedReader bcc = new BufferedReader(new FileReader(filechooser1.getSelectedFile()));
		            int color = Integer.parseInt(bcc.readLine());
		            
		            Color frontColor = new Color(color);
		            drawPanel.setForeground(frontColor);
		            color = Integer.parseInt(bcc.readLine());
		            
		            Color backColor = new Color(color);
		            drawPanel.setBackground(backColor);
		          
		            weightcombo.setSelectedIndex(Integer.parseInt(bcc.readLine()));
		            erasercombo.setSelectedIndex(Integer.parseInt(bcc.readLine()));
		            
		            ArrayList list = new ArrayList();
		          
		            while ((temp = bcc.readLine()) != null)
		                list.add(temp);
		            
		            drawPanel.setShapes(list);
		            }
		            
		            //打开的图形为其他格式
		            else
		            {
		            	 MediaTracker mt = new MediaTracker(this);
		                 Image img = Toolkit.getDefaultToolkit().createImage(filechooser1.
		                     getSelectedFile().getAbsolutePath());
		                 mt.addImage(img, 0);
		                 try {
		                   mt.waitForAll();
		                 }
		                 catch (Exception ex) {
		                   ex.printStackTrace();
		                 }
		                 CusImage aCusShape = new CusImage(img, 40, 40 );
		                 drawPanel.addShape(aCusShape);
		                 }
		          
		             } 
		        catch (Exception e) {
		            JOptionPane.showMessageDialog(this, e, "Error occur!", JOptionPane.ERROR_MESSAGE);
		          }
		    }
		
		 /**
		  * 保存图片
		  * @param evt
		  */
		 private void saveButtonActionPerformed(ActionEvent evt) {
			   try {
				   //若为定义图片的格式,则默认为自定义的格式
				    if (filechooser1 == null) {
		                filechooser1 = new JFileChooser();
		                filechooser1.setFileFilter( jpgFilter );
		                filechooser1.setFileFilter(myFilter);
		                filechooser1.setMultiSelectionEnabled(false);
		                filechooser1.setAcceptAllFileFilterUsed(false);
		            }
				 
				    //显示打开对话框
		            int result = filechooser1.showSaveDialog(this);
		            if (result != JFileChooser.APPROVE_OPTION)
		                return;
		           
		            File file = filechooser1.getSelectedFile();
		            if (!file.getName().toLowerCase().endsWith(".zzw")) {
		                file = new File(file.getAbsolutePath() + ".zzw");
		            }
		            
		            Color frontColor = drawPanel.getForeground();
		            Color backColor = drawPanel.getBackground();
		            PrintWriter acc = new PrintWriter(new FileWriter(file));
		            
		            //保存前景色
		            acc.println(frontColor.getRGB());
		            
		            //保存背景色
		            acc.println(backColor.getRGB());
		            
		            //保存各个工具的宽度
		            acc.println(weightcombo.getSelectedIndex());
		            
		            //保存橡皮擦的宽度
		            acc.print(erasercombo.getSelectedIndex());
		            
		            //保存图片的相关数据
		            acc.print(drawPanel.getShapes());
		            acc.close();
		            
		        } 
		            catch (Exception ioe) {
		            JOptionPane.showMessageDialog(this, ioe, "Error occur!", JOptionPane.ERROR_MESSAGE);
		        }
		    }
		 
		 /**
		  * 导出为PNG格式
		  * @param evt
		  */
		 private void emportButtonAciontPerformed(ActionEvent evt)
		 {
			 try {
		            if (filechooser2 == null) {
		                filechooser2 = new JFileChooser();
		                filechooser2.setFileFilter(secondFilter);
		                filechooser2.setMultiSelectionEnabled(false);
		                filechooser2.setAcceptAllFileFilterUsed(false);
		            }
		            int result = filechooser2.showSaveDialog(this);
		            if (result != JFileChooser.APPROVE_OPTION)
		                return;
		            
		            File file = filechooser2.getSelectedFile();
		            
		            if (!file.getName().toLowerCase().endsWith(".png")) {
		                file = new File(file.getAbsolutePath() + ".png");
		            }
		            
		            Dimension d = drawPanel.getSize();
		            
		            BufferedImage image = new BufferedImage(d.width, d.height, 
		                                            BufferedImage.TYPE_INT_ARGB);
		            Graphics2D g = image.createGraphics();
		            drawPanel.paint(g);
		            g.dispose();
		            ImageIO.write(image, "png", file);
		        } catch (Exception e) {
		            JOptionPane.showMessageDialog(this, e, "Error occur!", JOptionPane.ERROR_MESSAGE);
		        }
		 }

		 
		 /**
		  * mian函数
		  * @param args
		  */
	 public static void main(String args[]) {
		try {
		      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		    }
		    catch(Exception e) {
		      e.printStackTrace();
		    }
		new MyPaint();
    }
}
          /**
           * 关于对话框
           *
           */
   class MyPaint_AboutItem_actionAdapter implements java.awt.event.ActionListener {
            MyPaint adaptee;

            MyPaint_AboutItem_actionAdapter(MyPaint adaptee) 
            {
            	
            this.adaptee = adaptee;
            
            }
            
            public void actionPerformed(ActionEvent e)
            {
    	
            adaptee.jmAbout_actionPerformed(e);
            
             }
}
        
        
        
        
        
        
        
        
     
	   
	   
	   
		
		
		
		
		
		
		
	
	
	
	

⌨️ 快捷键说明

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