📄 mywindowsplot.java
字号:
/**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 + -