📄 mywindowsplot.java
字号:
for (int i = 0; i < countDrawRect; i++)
{
g2D.setColor(drawRectColor[i]);
//第一项限
if (mousePressedDrawRectX[i] < mouseReleasedDrawRectX[i] && mousePressedDrawRectY[i] < mouseReleasedDrawRectY[i])
{
g2D.draw3DRect(mousePressedDrawRectX[i], mousePressedDrawRectY[i],
mouseReleasedDrawRectX[i] - mousePressedDrawRectX[i], mouseReleasedDrawRectY[i] - mousePressedDrawRectY[i], true);
}
//第二项限
if (mousePressedDrawRectX[i] < mouseReleasedDrawRectX[i] && mousePressedDrawRectY[i] > mouseReleasedDrawRectY[i])
{
g2D.draw3DRect(mousePressedDrawRectX[i], mouseReleasedDrawRectY[i],
mouseReleasedDrawRectX[i] - mousePressedDrawRectX[i], mousePressedDrawRectY[i] - mouseReleasedDrawRectY[i], true);
}
//第三项限
if (mousePressedDrawRectX[i] > mouseReleasedDrawRectX[i] && mousePressedDrawRectY[i] > mouseReleasedDrawRectY[i])
{
g2D.draw3DRect(mouseReleasedDrawRectX[i], mouseReleasedDrawRectY[i],
mousePressedDrawRectX[i] - mouseReleasedDrawRectX[i], mousePressedDrawRectY[i] - mouseReleasedDrawRectY[i], true);
}
//第四项限
if (mousePressedDrawRectX[i] > mouseReleasedDrawRectX[i] && mousePressedDrawRectY[i] < mouseReleasedDrawRectY[i])
{
g2D.draw3DRect(mouseReleasedDrawRectX[i], mousePressedDrawRectY[i],
mousePressedDrawRectX[i] - mouseReleasedDrawRectX[i], mouseReleasedDrawRectY[i] - mousePressedDrawRectY[i], true);
}
}
//绘填充矩形
for (int i = 0; i < countFillRect; i++)
{
g2D.setColor(fillRectColor[i]);
//第一项限
if (mousePressedFillRectX[i] < mouseReleasedFillRectX[i] && mousePressedFillRectY[i] < mouseReleasedFillRectY[i])
{
g2D.fill3DRect(mousePressedFillRectX[i], mousePressedFillRectY[i],
mouseReleasedFillRectX[i] - mousePressedFillRectX[i], mouseReleasedFillRectY[i] - mousePressedFillRectY[i], true);
}
//第二项限
if (mousePressedFillRectX[i] < mouseReleasedFillRectX[i] && mousePressedFillRectY[i] > mouseReleasedFillRectY[i])
{
g2D.fill3DRect(mousePressedFillRectX[i], mouseReleasedFillRectY[i],
mouseReleasedFillRectX[i] - mousePressedFillRectX[i], mousePressedFillRectY[i] - mouseReleasedFillRectY[i], true);
}
//第三项限
if (mousePressedFillRectX[i] > mouseReleasedFillRectX[i] && mousePressedFillRectY[i] > mouseReleasedFillRectY[i])
{
g2D.fill3DRect(mouseReleasedFillRectX[i], mouseReleasedFillRectY[i],
mousePressedFillRectX[i] - mouseReleasedFillRectX[i], mousePressedFillRectY[i] - mouseReleasedFillRectY[i], true);
}
//第四项限
if (mousePressedFillRectX[i] > mouseReleasedFillRectX[i] && mousePressedFillRectY[i] < mouseReleasedFillRectY[i])
{
g2D.fill3DRect(mouseReleasedFillRectX[i], mousePressedFillRectY[i],
mousePressedFillRectX[i] - mouseReleasedFillRectX[i], mouseReleasedFillRectY[i] - mousePressedFillRectY[i], true);
}
}
//绘多边形
g2D.setColor(pColor);
g2D.drawPolygon(mousePressedDrawPolygonX, mousePressedDrawPolygonY, countDrawPolygon);
//填充多边形
g2D.fillPolygon(mousePressedFillPolygonX, mousePressedFillPolygonY, countFillPolygon);
//绘制画笔
g2D.draw(gPath);
//绘制擦皮
for (int i = 0; i < countDrawBrush; i++)
{
g2D.setColor(bgColor);
g2D.fillOval(mouseDrawBrushX[i] - 3, mouseDrawBrushY[i] - 3, 6, 6);
}
}
};
contentPane.setLayout(BorderLayout1);
contentPane.setBackground(bgColor);
setJMenuBar(jMenuBar1);
setSize(new Dimension(750, 550));
setTitle("WindowsPlot画图板");
MenuFile.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuFile.setText("文件(F)");
MenuFile.setMnemonic('F');
MenuNew.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuNew.setText("新建(N)");
MenuNew.setAccelerator(KeyStroke.getKeyStroke('N', java.awt.Event.CTRL_MASK, false));
MenuNew.setActionCommand("NewPage");
MenuOpen.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuOpen.setText("打开(O)");
MenuOpen.setAccelerator(KeyStroke.getKeyStroke('O', java.awt.Event.CTRL_MASK, false));
MenuOpen.setActionCommand("MenuOpen");
MenuSave.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuSave.setText("保存(S)");
MenuSave.setAccelerator(KeyStroke.getKeyStroke('S', java.awt.Event.CTRL_MASK, false));
MenuSave.setActionCommand("MenuSave");
MenuSaveAs.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuSaveAs.setText("另存为(A)");
MenuSaveAs.setAccelerator(KeyStroke.getKeyStroke('A', java.awt.Event.CTRL_MASK, false));
MenuSaveAs.setActionCommand("MenuSaveAs");
MenuExit.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuExit.setText("退出(E)");
MenuExit.setAccelerator(KeyStroke.getKeyStroke('E', java.awt.Event.CTRL_MASK, false));
MenuExit.setActionCommand("Exit");
MenuSight.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuSight.setText("查看(V)");
MenuSight.setMnemonic('V');
MenuColor.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
tool.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
tool.setAccelerator(KeyStroke.getKeyStroke('T', java.awt.Event.CTRL_MASK, false));
state.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
state.setAccelerator(KeyStroke.getKeyStroke('F', java.awt.Event.CTRL_MASK, false));
MenuColor.setText("颜色(C)");
MenuColor.setMnemonic('C');
MenuEditColor.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuEditColor.setText("背景颜色(B)");
MenuEditColor.setAccelerator(KeyStroke.getKeyStroke('B', java.awt.Event.CTRL_MASK, false));
MenuEditColor.setActionCommand("EditColor");
MenuEditPencilColor.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuEditPencilColor.setText("画笔颜色(P)");
MenuEditPencilColor.setAccelerator(KeyStroke.getKeyStroke('P', java.awt.Event.CTRL_MASK, false));
MenuEditPencilColor.setActionCommand("EditPencilColor");
precedent.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
precedent.setText("示例(P)");
precedent.setMnemonic('P');
precedent1.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
precedent1.setText("示例一(G)");
precedent1.setAccelerator(KeyStroke.getKeyStroke('G', java.awt.Event.CTRL_MASK, false));
precedent2.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
precedent2.setText("示例二(H)");
precedent2.setAccelerator(KeyStroke.getKeyStroke('H', java.awt.Event.CTRL_MASK, false));
precedent1.setActionCommand("precedent1");
precedent2.setActionCommand("precedent2");
menuColour.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
menuColour.setText("风格(M)");
menuColour.setMnemonic('M');
itemNative.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
itemNative.setText("系统平台风格(Y)");
itemNative.setAccelerator(KeyStroke.getKeyStroke('Y', java.awt.Event.CTRL_MASK, false));
itemNative.setActionCommand("itemNative");
itemMotif.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
itemMotif.setText("Motif风格(M)");
itemMotif.setAccelerator(KeyStroke.getKeyStroke('M', java.awt.Event.CTRL_MASK, false));
itemMotif.setActionCommand("itemMotif");
itemMetal.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
itemMetal.setText("跨平台风格(Z)");
itemMetal.setAccelerator(KeyStroke.getKeyStroke('Z', java.awt.Event.CTRL_MASK, false));
itemMetal.setActionCommand("itemMetal");
MenuHelp.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuHelp.setText("帮助(H)");
MenuHelp.setMnemonic('H');
MenuHelpText.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuHelpText.setText("帮助主题(H)");
MenuHelpText.setAccelerator(KeyStroke.getKeyStroke('H', java.awt.Event.CTRL_MASK, false));
MenuHelpText.setActionCommand("MenuHelpText");
MenuAbout.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
MenuAbout.setText("关于画图(C)");
MenuAbout.setAccelerator(KeyStroke.getKeyStroke('C', java.awt.Event.CTRL_MASK, false));
MenuAbout.setActionCommand("MenuAbout");
jToolBar1.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
jToolBar1.setFloatable(false);
jToolBar1.setBounds(new Rectangle(1, 1, 767, 24));
jbNew.setMaximumSize(new Dimension(29, 27));
jbNew.setMinimumSize(new Dimension(29, 27));
jbNew.setIcon(imageNew);
jbNew.setActionCommand("jbNew");
jbNew.setToolTipText("新建");
jbSave.setMaximumSize(new Dimension(29, 27));
jbSave.setMinimumSize(new Dimension(29, 27));
jbSave.setIcon(imageSave);
jbSave.setToolTipText("保存");
jbSave.setActionCommand("jbSave");
jbOpen.setMaximumSize(new Dimension(29, 27));
jbOpen.setMinimumSize(new Dimension(29, 27));
jbOpen.setIcon(imageOpen);
jbOpen.setToolTipText("打开");
jbOpen.setActionCommand("jbOpen");
jbPencil.setMaximumSize(new Dimension(29, 27));
jbPencil.setIcon(imageFill);
jbPencil.setToolTipText("画笔");
jbPencil.setMinimumSize(new Dimension(29, 27));
jbBrush.setMaximumSize(new Dimension(29, 27));
jbBrush.setToolTipText("擦皮");
jbBrush.setIcon(imageBrush);
jbBrush.setMinimumSize(new Dimension(29, 27));
jbBeeline.setMaximumSize(new Dimension(29, 27));
jbBeeline.setToolTipText("直线");
jbBeeline.setIcon(imageBeeline);
jbBeeline.setMinimumSize(new Dimension(29, 27));
jbRotundity.setMaximumSize(new Dimension(29, 27));
jbRotundity.setIcon(imageRotundity);
jbRotundity.setToolTipText("圆");
jbRotundity.setMinimumSize(new Dimension(29, 27));
jbPolygon.setMaximumSize(new Dimension(29, 27));
jbPolygon.setIcon(imagePolygon);
jbPolygon.setToolTipText("多边形");
jbPolygon.setMinimumSize(new Dimension(29, 27));
jbRect.setMaximumSize(new Dimension(29, 27));
jbRect.setIcon(imageRect);
jbRect.setToolTipText("矩形");
jbRect.setMinimumSize(new Dimension(29, 27));
jbFillRotundity.setMaximumSize(new Dimension(29, 27));
jbFillRotundity.setToolTipText("填充圆形");
jbFillRotundity.setIcon(imageFillOval);
jbFillRotundity.setMinimumSize(new Dimension(29, 27));
jbFillRect.setMaximumSize(new Dimension(29, 27));
jbFillRect.setToolTipText("填充矩形");
jbFillRect.setIcon(imageFillRect);
jbFillRect.setMinimumSize(new Dimension(29, 27));
jbFillPolygon.setMaximumSize(new Dimension(29, 27));
jbFillPolygon.setToolTipText("填充多边形");
jbFillPolygon.setIcon(imageFillPolygon);
jbFillPolygon.setMinimumSize(new Dimension(29, 27));
state.setSelected(true);
jLabel1.setText("坐标: ");
jLabel1.setBounds(new Rectangle(0, 526, 750, 24));
menuColour.add(itemNative);
menuColour.add(itemMotif);
menuColour.add(itemMetal);
jMenuBar1.add(MenuFile);
jMenuBar1.add(MenuSight);
jMenuBar1.add(MenuColor);
precedent.add(precedent1);
precedent.add(precedent2);
jMenuBar1.add(precedent);
jMenuBar1.add(menuColour);
jMenuBar1.add(MenuHelp);
MenuFile.add(MenuNew);
MenuFile.add(MenuOpen);
MenuFile.add(MenuSave);
MenuFile.add(MenuSaveAs);
MenuFile.addSeparator();
MenuFile.add(MenuExit);
MenuSight.add(tool);
MenuSight.add(state);
MenuColor.add(MenuEditColor);
MenuColor.add(MenuEditPencilColor);
MenuHelp.add(MenuHelpText);
MenuHelp.addSeparator();
MenuHelp.add(MenuAbout);
jToolBar1.add(jbNew);
jToolBar1.add(jbSave);
jToolBar1.add(jbOpen);
jToolBar1.addSeparator();
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);
this.add(jToolBar1, BorderLayout.NORTH);
this.add(contentPane, BorderLayout.CENTER);
this.add(jLabel1, BorderLayout.SOUTH);
//根据选择状态进行绘图如:是否为直线,是否画圆等()
cbg = new ButtonGroup();
cbg.add(jbPencil);
cbg.add(jbBrush);
cbg.add(jbBeeline);
cbg.add(jbRotundity);
cbg.add(jbPolygon);
cbg.add(jbRect);
cbg.add(jbFillRotundity);
cbg.add(jbFillRect);
cbg.add(jbFillPolygon);
//根据"查看"菜单下的项目选择状态而动态加载工具栏
tool.setSelected(true);
//以下为 JCheckBoxMenuItem 事件
miListener = new MyItemListener();
tool.addItemListener(miListener);
state.addItemListener(miListener);
//以下代码为增加事件
maListener = new MyActionListener();
MenuExit.addActionListener(maListener);
MenuNew.addActionListener(maListener);
MenuEditColor.addActionListener(maListener);
MenuEditPencilColor.addActionListener(maListener);
jbNew.addActionListener(maListener);
MenuSave.addActionListener(maListener);
MenuSaveAs.addActionListener(maListener);
MenuOpen.addActionListener(maListener);
MenuAbout.addActionListener(maListener);
jbPencil.addActionListener(maListener);
jbBrush.addActionListener(maListener);
jbBeeline.addActionListener(maListener);
jbRotundity.addActionListener(maListener);
jbPolygon.addActionListener(maListener);
jbRect.addActionListener(maListener);
jbFillRotundity.addActionListener(maListener);
jbFillRect.addActionListener(maListener);
jbFillPolygon.addActionListener(maListener);
jbSave.addActionListener(maListener);
jbOpen.addActionListener(maListener);
MenuHelpText.addActionListener(maListener);
precedent1.addActionListener(maListener);
precedent2.addActionListener(maListener);
itemNative.addActionListener(maListener);
itemMotif.addActionListener(maListener);
itemMetal.addActionListener(maListener);
contentPane.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
jLabel1.setText("坐标:" + " " + e.getX() + " " + e.getY());
}
});
contentPane.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent evt)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -