package com.kiritor.painter;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.imageio.ImageIO;
import java.io.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.font.*;
public class Painter extends JFrame implements ActionListener {
private Container c = getContentPane();
private String menuBar[] = { "文件(F)", "编辑(E)", "视图(V)", "说明(H)" };
private String menuItem[][] = {
{ "新建(N)|78", "打开(O)|79", "保存(S)|83", "另存为(A)", "退出(X)|88" },
{ "撤消(U)|90", "重复(R)|89", "剪切(T)|87", "复制(C)|68", "粘贴(P)|85" },
{ "工具箱(T)|84", "色块(C)|76", "状态栏(S)", "属性栏(M)" }, { "关于小画家(A)" } };
private JMenuItem jMenuItem[][] = new JMenuItem[4][5];
private JMenu jMenu[];
private JCheckBoxMenuItem jCheckBoxMenuItem[] = new JCheckBoxMenuItem[4];
private String ButtonName[] = { "直线", "矩开", "椭圆", "圆角矩形", "贝氏曲线", "扇型",
"多边形", "铅笔", "橡皮擦", "文字", "选取" };
private JToggleButton jToggleButton[];
private ButtonGroup buttonGroup;
private JPanel jPanel[] = new JPanel[5];// 0內層,1繪圖區,2工具箱,3色塊,4屬性欄
private JLabel jLabel[] = new JLabel[1];// 狀態列
private String toolname[] = { "img/tool1.gif", "img/tool2.gif",
"img/tool3.gif", "img/tool4.gif", "img/tool5.gif", "img/tool8.gif",
"img/tool9.gif", "img/tool7.gif", "img/tool6.gif",
"img/tool10.gif", "img/tool11.gif" };
private Icon tool[] = new ImageIcon[11];
private int i, j, show_x, show_y, drawMethod = 7, draw_panel_width = 700,
draw_panel_height = 500;
private Paint color_border, color_inside;
private SetPanel setPanel;
private DrawPanel drawPanel;
private UnderDrawPanel underDrawPanel;
private ColorPanel colorPanel;
private Stroke stroke;
private Shape shape;
private String isFilled;
// Download:http://www.codefans.net
public Painter() {
// 設定JMenuBar,並產生JMenuItem、並設置快捷鍵
JMenuBar bar = new JMenuBar();
jMenu = new JMenu[menuBar.length];
for (i = 0; i < menuBar.length; i++) {
jMenu[i] = new JMenu(menuBar[i]);
jMenu[i].setMnemonic(menuBar[i].split("\\(")[1].charAt(0));
bar.add(jMenu[i]);
}
for (i = 0; i < menuItem.length; i++) {
for (j = 0; j < menuItem[i].length; j++) {
if (i == 0 && j == 4 || i == 1 && j == 2)
jMenu[i].addSeparator();
if (i != 2) {
jMenuItem[i][j] = new JMenuItem(
menuItem[i][j].split("\\|")[0]);
if (menuItem[i][j].split("\\|").length != 1)
jMenuItem[i][j]
.setAccelerator(KeyStroke.getKeyStroke(
Integer.parseInt(menuItem[i][j]
.split("\\|")[1]),
ActionEvent.CTRL_MASK));
jMenuItem[i][j].addActionListener(this);
jMenuItem[i][j].setMnemonic(menuItem[i][j].split("\\(")[1]
.charAt(0));
jMenu[i].add(jMenuItem[i][j]);
} else {
jCheckBoxMenuItem[j] = new JCheckBoxMenuItem(
menuItem[i][j].split("\\|")[0]);
if (menuItem[i][j].split("\\|").length != 1)
jCheckBoxMenuItem[j].setAccelerator(KeyStroke
.getKeyStroke(Integer.parseInt(menuItem[i][j]
.split("\\|")[1]),
ActionEvent.CTRL_MASK));
jCheckBoxMenuItem[j].addActionListener(this);
jCheckBoxMenuItem[j].setMnemonic(menuItem[i][j]
.split("\\(")[1].charAt(0));
jCheckBoxMenuItem[j].setSelected(true);
jMenu[i].add(jCheckBoxMenuItem[j]);
}
}
}
this.setJMenuBar(bar);
c.setLayout(new BorderLayout());
for (i = 0; i < 5; i++)
jPanel[i] = new JPanel();
jLabel[0] = new JLabel(" 狀態列");
buttonGroup = new ButtonGroup();
JToolBar jToolBar = new JToolBar("工具箱", JToolBar.VERTICAL);
jToggleButton = new JToggleButton[ButtonName.length];
for (i = 0; i < ButtonName.length; i++) {
tool[i] = new ImageIcon(getClass().getClassLoader().getResource(
toolname[i]));
jToggleButton[i] = new JToggleButton(tool[i]);
jToggleButton[i].addActionListener(this);
jToggleButton[i].setFocusable(false);
buttonGroup.add(jToggleButton[i]);
}
jToolBar.add(jToggleButton[7]);
jToolBar.add(jToggleButton[8]);
jToolBar.add(jToggleButton[0]);
jToolBar.add(jToggleButton[4]);
jToolBar.add(jToggleButton[1]);
jToolBar.add(jToggleButton[3]);
jToolBar.add(jToggleButton[2]);
jToolBar.add(jToggleButton[5]);
jToolBar.add(jToggleButton[6]);
jToolBar.add(jToggleButton[9]);
jToolBar.add(jToggleButton[10]);
jToggleButton[7].setSelected(true);
jToolBar.setLayout(new GridLayout(6, 2, 2, 2));
jPanel[2].add(jToolBar);
jToolBar.setFloatable(false);// 無法移動
colorPanel = new ColorPanel();
jPanel[3].setLayout(new FlowLayout(FlowLayout.LEFT));
jPanel[3].add(colorPanel);
drawPanel = new DrawPanel();
underDrawPanel = new UnderDrawPanel();
underDrawPanel.setLayout(null);
underDrawPanel.add(drawPanel);
drawPanel.setBounds(new Rectangle(2, 2, draw_panel_width,
draw_panel_height));
setPanel = new SetPanel();
jPanel[4].add(setPanel);
jPanel[0].setLayout(new BorderLayout());
jPanel[0].add(underDrawPanel, BorderLayout.CENTER);
jPanel[0].add(jPanel[2], BorderLayout.WEST);
jPanel[0].add(jPanel[3], BorderLayout.SOUTH);
jPanel[0].add(jPanel[4], BorderLayout.EAST);
jLabel[0].setBorder(BorderFactory
.createBevelBorder(BevelBorder.LOWERED));
underDrawPanel.setBorder(BorderFactory
.createBevelBorder(BevelBorder.LOWERED));
underDrawPanel.setBackground(new Color(128, 128, 128));
jPanel[3].setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0,
new Color(172, 168, 153)));
c.add(jPanel[0], BorderLayout.CENTER);
c.add(jLabel[0], BorderLayout.SOUTH);
setSize(draw_panel_width, draw_panel_height);
setIconImage(new ImageIcon( ( getClass().getClassLoader()
.getResource( "img/paint.gif" ))).getImage());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void save() {
FileDialog fileDialog = new FileDialog(new Frame(), "请指定一个文件名",
FileDialog.SAVE);
fileDialog.show();
if (fileDialog.getFile() == null)
return;
drawPanel.filename = fileDialog.getDirectory() + fileDialog.getFile();
}
public void actionPerformed(ActionEvent e) {
for (i = 0; i < ButtonName.length; i++) {
if (e.getSource() == jToggleButton[i]) {
drawMethod = i;
if (drawMethod == 5)
setPanel.pie_add_ctrl();
else
setPanel.pie_remove_ctrl();
if (drawMethod == 7 || drawMethod == 8)
setPanel.pencil_add_ctrl();
else
setPanel.pencil_remove_ctrl();
drawPanel.clear();
drawPanel.repaint();
jMenuItem[1][2].setEnabled(false);
jMenuItem[1][3].setEnabled(false);
}
}
if (e.getSource() == jMenuItem[1][0]) {
drawPanel.undo();
} else if (e.getSource() == jMenuItem[1][1]) {
drawPanel.redo();
} else if (e.getSource() == jMenuItem[1][2]) {
drawPanel.cut();
} else if (e.getSource() == jMenuItem[1][3]) {
drawPanel.copy();
} else if (e.getSource() == jMenuItem[1][4]) {
drawPanel.paste();
} else if (e.getSource() == jMenuItem[0][0]) {// 開新檔案
underDrawPanel.remove(drawPanel);
drawPanel = null;
drawPanel = new DrawPanel();
underDrawPanel.add(drawPanel);
drawPanel.setBounds(new Rectangle(2, 2, draw_panel_width,
draw_panel_height));
underDrawPanel.ctrl_area.setLocation(draw_panel_width + 3,
draw_panel_height + 3);
underDrawPanel.ctrl_area2.setLocation(draw_panel_width + 3,
draw_panel_height / 2 + 3);
underDrawPanel.ctrl_area3.setLocation(draw_panel_width / 2 + 3,
draw_panel_height + 3);
repaint();
} else if (e.getSource() == jMenuItem[0][1]) {// 開啟舊檔
FileDialog fileDialog = new FileDialog(new Frame(), "選擇一個圖檔",
FileDialog.LOAD);
fileDialog.show();
if (fileDialog.getFile() == null)
return;
没有合适的资源?快使用搜索试试~ 我知道了~
Design for Coder
共183个文件
png:66个
class:62个
gif:32个
3星 · 超过75%的资源 需积分: 9 97 下载量 160 浏览量
2013-03-23
09:47:21
上传
评论 5
收藏 235KB ZIP 举报
温馨提示
java实现的小应用 集成了截屏、取色,放大镜,画图的功能 界面还是较为友好的。适合想学习java界面Swing、awt 技术的新手学习 我的积分不多,就收取一分的资源分吧 下载评论可反分的!
资源推荐
资源详情
资源评论
收起资源包目录
Design for Coder (183个子文件)
Magnifier.cfg 135B
Painter$DrawPanel.class 19KB
Painter.class 14KB
CaptureView.class 11KB
CoderFrame.class 11KB
Painter$ColorPanel.class 11KB
ColorView.class 11KB
MagnifierWindow.class 9KB
ToolPanel.class 9KB
Painter$SetPanel.class 7KB
InfoPanel.class 5KB
Painter$UnderDrawPanel.class 4KB
MagnifierPanel.class 4KB
ImagePanel.class 2KB
ImagePanel.class 2KB
MagnifierWindow$MouseMotionFunctions.class 2KB
MagnifierWindow$TimeUpdate.class 2KB
MagnifierWindow$MouseFunctions.class 2KB
CaptureView$1.class 2KB
MagnifierWindow$4.class 2KB
ToolImagePanel.class 2KB
ToolImagePanel.class 2KB
BackGroundPanel.class 2KB
BackGroundPanel.class 1KB
CaptureView$2.class 1KB
ImageLabel.class 1KB
Painter$Gradient.class 1KB
InfoPanel$2.class 1KB
InfoPanel$1.class 1KB
ToolPanel$7.class 1KB
ColorView$1.class 1KB
MagnifierWindow$5.class 1KB
CoderFrame$2.class 1KB
ToolPanel$4.class 1KB
CoderFrame$3.class 1KB
CoderFrame$14.class 1KB
ToolPanel$JPGfilter.class 1KB
ToolPanel$PNGfilter.class 1KB
ToolPanel$BMPfilter.class 1KB
CoderFrame$13.class 1KB
ToolPanel$6.class 1KB
ToolPanel$5.class 1KB
ToolPanel$2.class 1KB
ToolPanel$3.class 1KB
ToolPanel$1.class 1KB
CoderFrame$1.class 973B
MagnifierWindow$7.class 972B
MagnifierWindow$3.class 963B
MagnifierWindow$2.class 962B
MagnifierWindow$6.class 933B
ColorView$2.class 920B
CoderFrame$9.class 878B
MagnifierIcon.class 856B
CoderFrame$11.class 844B
CoderFrame$7.class 820B
MagnifierWindow$1.class 802B
CoderFrame$5.class 763B
CoderFrame$6.class 709B
CoderFrame$4.class 709B
CoderFrame$10.class 705B
CoderFrame$8.class 698B
CoderFrame$12.class 520B
ConfigData.class 430B
.classpath 302B
Thumbs.db 18KB
Thumbs.db 18KB
Thumbs.db 14KB
paint.gif 2KB
paint.gif 2KB
icon3.gif 948B
icon3.gif 948B
tool6.gif 893B
tool6.gif 893B
tool7.gif 890B
tool7.gif 890B
icon2.gif 868B
icon2.gif 868B
icon1.gif 836B
icon1.gif 836B
icon4.gif 835B
icon4.gif 835B
tool9.gif 140B
tool4.gif 140B
tool4.gif 140B
tool9.gif 140B
tool2.gif 138B
tool2.gif 138B
tool3.gif 138B
tool3.gif 138B
tool8.gif 134B
tool8.gif 134B
tool10.gif 130B
tool10.gif 130B
tool11.gif 127B
tool11.gif 127B
tool5.gif 123B
tool5.gif 123B
tool1.gif 120B
tool1.gif 120B
Painter.java 51KB
共 183 条
- 1
- 2
资源评论
- wwl4431408992013-03-24Design for Coder 挺适合初学者的学习材料,谢谢分享
- 角落2152013-10-12挺好用的一个工具
- IvanChen1232013-12-05不能用啊,什么情况!
- K.SHI2017-01-05还不错的。谢谢分享
- 狂野之弓2015-06-04性能不好,截屏时候鼠标有好大的反应延迟
LCore
- 粉丝: 606
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功