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

📄 mywindowsplot.java

📁 java画图程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/**WindowsPlot 绘图板
*@file: MyWindowsPlot.java 
*@author: 刘涛
*@date: 2005年12月1日 
*/ 
package mypackage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.BufferedImage;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.awt.geom.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.text.*;

public class MyWindowsPlot extends JFrame
{
	File selFiles;
	Image img;
	public JPanel contentPane;
	BufferedImage image;
	public Color bgColor = new Color (255, 255, 255);
	public Color pColor = new Color (0, 0, 0);
	BorderLayout BorderLayout1 = new BorderLayout();
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu MenuFile = new JMenu();
    JMenuItem MenuNew = new JMenuItem();
    JMenuItem MenuOpen = new JMenuItem();
    JMenuItem MenuSave = new JMenuItem();
    JMenuItem MenuSaveAs = new JMenuItem();
    JMenuItem MenuExit = new JMenuItem();
    JMenu MenuSight = new JMenu();
    JMenu MenuColor = new JMenu();
    JMenu precedent = new JMenu();
    JMenuItem precedent1 = new JMenuItem();
    JMenuItem precedent2 = new JMenuItem();    
    JMenuItem MenuEditColor = new JMenuItem();
    JMenuItem MenuEditPencilColor = new JMenuItem();    
    JMenu MenuHelp = new JMenu();
    JMenuItem MenuHelpText = new JMenuItem();
    JMenuItem MenuAbout = new JMenuItem();
    JMenu menuColour = new JMenu();
	JMenuItem itemNative = new JMenuItem();
	JMenuItem itemMotif = new JMenuItem();
	JMenuItem itemMetal = new JMenuItem();    
    JCheckBoxMenuItem tool = new JCheckBoxMenuItem("工具箱(T)");
    JCheckBoxMenuItem state = new JCheckBoxMenuItem("状态栏(F)");
    JToolBar jToolBar1 = new JToolBar();
    JButton jbNew = new JButton();
    JButton jbSave = new JButton();
    JButton jbOpen = new JButton();
    JToggleButton jbPencil = new JToggleButton();
    JToggleButton jbBrush = new JToggleButton();
    JToggleButton jbBeeline = new JToggleButton();
    JToggleButton jbRotundity = new JToggleButton();
    JToggleButton jbPolygon = new JToggleButton();
    JToggleButton jbRect = new JToggleButton();
    JToggleButton jbFillRotundity = new JToggleButton();
    JToggleButton jbFillRect = new JToggleButton();
    JToggleButton jbFillPolygon = new JToggleButton();    
    JLabel jLabel1 = new JLabel();
    ImageIcon imageNew = new ImageIcon("MyPicture\\New24.gif");
    ImageIcon imageSave = new ImageIcon("MyPicture\\Save24.gif");
    ImageIcon imageOpen = new ImageIcon("MyPicture\\Open24.gif");
    ImageIcon imageFill = new ImageIcon("MyPicture\\Fill.gif");
    ImageIcon imageBrush = new ImageIcon("MyPicture\\Brush.gif");
    ImageIcon imageBeeline = new ImageIcon("MyPicture\\Beeline.gif");
    ImageIcon imageRotundity = new ImageIcon("MyPicture\\Rotundity.gif");
    ImageIcon imagePolygon = new ImageIcon("MyPicture\\Polygon.gif");
    ImageIcon imageRect = new ImageIcon("MyPicture\\Rect.gif");
    ImageIcon imageAbout = new ImageIcon("MyPicture\\About24.gif");
    ImageIcon imageFillRect = new ImageIcon("MyPicture\\fillRect.gif");
    ImageIcon imageFillOval = new ImageIcon("MyPicture\\fillOval.gif");
    ImageIcon imageFillPolygon = new ImageIcon("MyPicture\\fillPolygon.gif");
    static Image windowsIcon = Toolkit.getDefaultToolkit().getImage("MyPicture\\12.gif");
    
    ButtonGroup cbg;
    MyActionListener maListener;
    MyItemListener miListener;
    
    //设置画笔颜色变量
    public Color[] drawLineColor = new Color[10000];
    public Color[] drawOvalColor = new Color[10000];
    public Color[] drawRectColor = new Color[10000];
    public Color[] fillRectColor = new Color[10000];
    public Color[] fillOvalColor = new Color[10000];

    //绘制直线的变量
    public int countDrawLine = 0;
    public int mousePressedDrawLineX[] = new int[10000], mousePressedDrawLineY[] = new int[10000];
    public int mouseReleasedDrawLineX[] = new int[10000], mouseReleasedDrawLineY[] = new int[10000];

    //绘制矩行的变量
    public int countDrawRect = 0;
    public int mousePressedDrawRectX[] = new int[10000], mousePressedDrawRectY[] = new int[10000];
    public int mouseReleasedDrawRectX[] = new int[10000], mouseReleasedDrawRectY[] = new int[10000];
    public int mouseDraggedDrawRectX = 0, mouseDraggedDrawRectY = 0;

    //绘制圆形的变量
    public int countDrawOval = 0;
    public int mouseDraggedDrawOvalX = 0, mouseDraggedDrawOvalY = 0;
    public int mouseReleasedDrawOvalX[] = new int[10000], mouseReleasedDrawOvalY[] = new int[10000];
    public int mousePressedDrawOvalX[] = new int[10000], mousePressedDrawOvalY[] = new int[10000];
	
	//绘制填充圆形的变量
    public int countFillOval = 0;
    public int mouseDraggedFillOvalX = 0, mouseDraggedFillOvalY = 0;
    public int mouseReleasedFillOvalX[] = new int[10000], mouseReleasedFillOvalY[] = new int[10000];
    public int mousePressedFillOvalX[] = new int[10000], mousePressedFillOvalY[] = new int[10000];
	
	//绘制多边形的变量
	public int countDrawPolygon = 0;
	public int mousePressedDrawPolygonX[] = new int[10000], mousePressedDrawPolygonY[] = new int[10000];
	
	//绘制填充多边形的变量
	public int countFillPolygon = 0;
	public int mousePressedFillPolygonX[] = new int[10000], mousePressedFillPolygonY[] = new int[10000];
	
	//绘制填充矩形的变量
	public int countFillRect = 0;
    public int mousePressedFillRectX[] = new int[10000], mousePressedFillRectY[] = new int[10000];
    public int mouseReleasedFillRectX[] = new int[10000], mouseReleasedFillRectY[] = new int[10000];
    public int mouseDraggedFillRectX = 0, mouseDraggedFillRectY = 0;
	
	//绘制画笔的变量
	//GeneralPath对象实例
	GeneralPath gPath = new GeneralPath(); 
	Point pencilPoint;
	
	//绘制擦皮的变量
	public int countDrawBrush = 0;
	public int mouseDrawBrushX[] = new int[10000], mouseDrawBrushY[] = new int[10000];
	
    //绘制图形的监听器
    MouseListener mlOneDrawRect, mlTwoDrawRect, mlOneFillRect, mlTwoFillRect;
    MouseMotionListener mmlDrawRect, mmlFillRect;
    MouseListener mlOneDrawLine, mlTwoDrawLine;
    MouseListener mlOneDrawOval, mlTwoDrawOval, mlOneFillOval, mlTwoFillOval;
    MouseMotionListener mmlDrawOval, mmlFillOval;
    MouseListener mlOneDrawPolygon, mlOneFillPolygon;
    MouseListener mlOneDrawPencil;
    MouseMotionListener mmlDrawPencil;
    MouseListener mlOneDrawBrush;
    MouseMotionListener mmlDrawBrush;
	
    public static void main(String[] args)
    {
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	JDialog.setDefaultLookAndFeelDecorated(true);
        MyWindowsPlot m = new MyWindowsPlot();
        m.setLocationRelativeTo(m);
        m.setIconImage(windowsIcon);
        m.setVisible(true);
    }
    
    //改变系统风格样式
    public void changeLookAndFeel(String type)
	{
		try
		{    	
			if(type.equals("Native"))
			{
				UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			}
			else if(type.endsWith("Motif"))
			{
				UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
			}
			else if(type.equals("Metal"))
			{
				UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
			}
			javax.swing.SwingUtilities.updateComponentTreeUI(jMenuBar1);
			javax.swing.SwingUtilities.updateComponentTreeUI(jLabel1);
			javax.swing.SwingUtilities.updateComponentTreeUI(jToolBar1);
			javax.swing.SwingUtilities.updateComponentTreeUI(contentPane);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	public void myAdd(JPanel jp)
	{
		this.add(jp, BorderLayout.CENTER);
		jToolBar1.add(jbPencil);
		jToolBar1.add(jbBrush);
		jToolBar1.add(jbBeeline);
		jToolBar1.add(jbRotundity);
		jToolBar1.add(jbPolygon);
		jToolBar1.add(jbRect);
		jToolBar1.add(jbFillRotundity);
		jToolBar1.add(jbFillRect);
		jToolBar1.add(jbFillPolygon);
		tool.setSelected(true);
	}
	
	public void myRemove(JPanel jp)
	{
		jToolBar1.remove(jbPencil);
		jToolBar1.remove(jbBrush);
		jToolBar1.remove(jbBeeline);
		jToolBar1.remove(jbRotundity);
		jToolBar1.remove(jbPolygon);
		jToolBar1.remove(jbRect);
		jToolBar1.remove(jbFillRotundity);
		jToolBar1.remove(jbFillRect);
		jToolBar1.remove(jbFillPolygon);
		tool.setSelected(false);
		this.remove(jp);
	}
	
    public MyWindowsPlot()
    {
        try
        {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            
            addMouseListener(new MouseAdapter()
			{
				public void mouseEntered(MouseEvent evt)
				{
					//改变鼠标指针的样式
					setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
				}
			});
            jbInit();
        }
        catch (Exception exception)
        {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception
    {
        contentPane = new JPanel()
        {
			public void paintComponent(Graphics g)
			{
				super.paintComponent(g);
				Graphics2D g2D = (Graphics2D)g;
				    	
				//绘直线
				for (int i = 0; i < countDrawLine; i++)
				{
					g2D.setColor(drawLineColor[i]);					
					g2D.drawLine(mousePressedDrawLineX[i], mousePressedDrawLineY[i],
						mouseReleasedDrawLineX[i], mouseReleasedDrawLineY[i]);	    	
				}
					    
				//绘圆
				for (int i = 0; i < countDrawOval; i++)
				{
					g2D.setColor(drawOvalColor[i]);	
					//第一项限
					if (mousePressedDrawOvalX[i] < mouseReleasedDrawOvalX[i] && mousePressedDrawOvalY[i] < mouseReleasedDrawOvalY[i])
					{	    	
						g2D.drawOval(mousePressedDrawOvalX[i], mousePressedDrawOvalY[i], 
					   		mouseReleasedDrawOvalX[i] - mousePressedDrawOvalX[i], mouseReleasedDrawOvalY[i] - mousePressedDrawOvalY[i]);
					}
					    	
					//第二项限
					if (mousePressedDrawOvalX[i] < mouseReleasedDrawOvalX[i] && mousePressedDrawOvalY[i] > mouseReleasedDrawOvalY[i])
					{
						g2D.drawOval(mousePressedDrawOvalX[i], mouseReleasedDrawOvalY[i], 
					   		mouseReleasedDrawOvalX[i] - mousePressedDrawOvalX[i], mousePressedDrawOvalY[i] - mouseReleasedDrawOvalY[i]);
					}
					    	
					//第三项限
					if (mousePressedDrawOvalX[i] > mouseReleasedDrawOvalX[i] && mousePressedDrawOvalY[i] > mouseReleasedDrawOvalY[i])
					{
						g2D.drawOval(mouseReleasedDrawOvalX[i], mouseReleasedDrawOvalY[i], 
					   		mousePressedDrawOvalX[i] - mouseReleasedDrawOvalX[i], mousePressedDrawOvalY[i] - mouseReleasedDrawOvalY[i]);
					}
					    	
					//第四项限
					if (mousePressedDrawOvalX[i] > mouseReleasedDrawOvalX[i] && mousePressedDrawOvalY[i] < mouseReleasedDrawOvalY[i])
					{
					   	g2D.drawOval(mouseReleasedDrawOvalX[i], mousePressedDrawOvalY[i],
					   		mousePressedDrawOvalX[i] - mouseReleasedDrawOvalX[i], mouseReleasedDrawOvalY[i] - mousePressedDrawOvalY[i]);	
					}
				}
				
				//绘填充圆
				for (int i = 0; i < countFillOval; i++)
				{
					g2D.setColor(fillOvalColor[i]);	
					//第一项限
					if (mousePressedFillOvalX[i] < mouseReleasedFillOvalX[i] && mousePressedFillOvalY[i] < mouseReleasedFillOvalY[i])
					{	    	
						g2D.fillOval(mousePressedFillOvalX[i], mousePressedFillOvalY[i], 
					   		mouseReleasedFillOvalX[i] - mousePressedFillOvalX[i], mouseReleasedFillOvalY[i] - mousePressedFillOvalY[i]);
					}
					    	
					//第二项限
					if (mousePressedFillOvalX[i] < mouseReleasedFillOvalX[i] && mousePressedFillOvalY[i] > mouseReleasedFillOvalY[i])
					{
						g2D.fillOval(mousePressedFillOvalX[i], mouseReleasedFillOvalY[i], 
					   		mouseReleasedFillOvalX[i] - mousePressedFillOvalX[i], mousePressedFillOvalY[i] - mouseReleasedFillOvalY[i]);
					}
					    	
					//第三项限
					if (mousePressedFillOvalX[i] > mouseReleasedFillOvalX[i] && mousePressedFillOvalY[i] > mouseReleasedFillOvalY[i])
					{
						g2D.fillOval(mouseReleasedFillOvalX[i], mouseReleasedFillOvalY[i], 
					   		mousePressedFillOvalX[i] - mouseReleasedFillOvalX[i], mousePressedFillOvalY[i] - mouseReleasedFillOvalY[i]);
					}
					    	
					//第四项限
					if (mousePressedFillOvalX[i] > mouseReleasedFillOvalX[i] && mousePressedFillOvalY[i] < mouseReleasedFillOvalY[i])
					{
					   	g2D.fillOval(mouseReleasedFillOvalX[i], mousePressedFillOvalY[i],
					   		mousePressedFillOvalX[i] - mouseReleasedFillOvalX[i], mouseReleasedFillOvalY[i] - mousePressedFillOvalY[i]);	
					}
				}
					
				//绘矩形

⌨️ 快捷键说明

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