//添加了JFileChooser,实现了“打开”“保存”“新建"等窗口
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.geom.*;
public class MyPaint extends JFrame {
/**
* 实现画图的基本功能
* @author Administrator
*
*/
class DrawingPanel extends JPanel{
//构造DrawingPanel实例
public DrawingPanel(){
setBackground(Color.white);
addMouseListener(new MyMouseListener());
addMouseMotionListener(new MyMouseListener());
}
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D)g;
g2d.setStroke(new BasicStroke(penSize));
g2d.setColor(color);
if (flag == 0){
g2d.drawLine(oldX, oldY, newX, newY);
}else if (flag == 1){
Rectangle2D rect = new Rectangle2D.Double((double)oldX, (double)oldY, (double)(newX - oldX), (double)(newY - oldY));
g2d.draw(rect);
}else if (flag == 2){
Ellipse2D ellipse = new Ellipse2D.Double((double)oldX, (double)oldY, (double)(newX - oldX), (double)(newY - oldY));
g2d.draw(ellipse);
}else if (flag == 3){
Line2D line2 = new Line2D.Double((double)oldX, (double)oldY, (double)(newX), (double)(newY));
g2d.draw(line2);
}
}
class MyMouseListener extends MouseAdapter implements MouseMotionListener{
//单击响应记录座标
public void mousePressed(MouseEvent e){
oldX = newX = e.getX();
oldY = newY = e.getY();
prompt.setText("按住不放拖动可以画出线条");
}
//拖动响应画出线条
public void mouseDragged(MouseEvent e){
if (flag == 0){
oldX = newX;
oldY = newY;
newX = e.getX();
newY = e.getY();
prompt.setText("松开左键可以释放画笔");
repaint();
}else{
newX = e.getX();
newY = e.getY();
}
}
public void mouseReleased(MouseEvent e){
prompt.setText("按住不放拖动可以画出线条");
newX = e.getX();
newY = e.getY();
repaint();
}
}
}
/**
* 添加菜单
* @param title
*/
public JMenuBar createMenubar(){
//菜单条
JMenuBar menubar = new JMenuBar();
//菜单项目
JMenu fileMenu, drawMenu, helpMenu;
JMenuItem menuitem;
/* 文件菜单 */
fileMenu = new JMenu("文件(F)");
//打开文件
JMenuItem openitem = new JMenuItem("打开(O)", new ImageIcon("openfile.gif"));
openitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showOpenDialog(container);
}
});
fileMenu.add(openitem);
//建立新文件
JMenuItem newitem = new JMenuItem("新建(N)", new ImageIcon("newfile.gif"));
newitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showDialog(container, "建立文件");
}
});
fileMenu.add(newitem);
//程序保存
JMenuItem saveitem = new JMenuItem("保存(S)", new ImageIcon("savefile.gif"));
saveitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showSaveDialog(container);
}
});
fileMenu.add(saveitem);
//程序退出
fileMenu.addSeparator();
menuitem = new JMenuItem("退出(X)", new ImageIcon("quit.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
fileMenu.add(menuitem);
menubar.add(fileMenu);
/* 绘图菜单 */
drawMenu = new JMenu("绘制(D)");
//颜色
menuitem = new JMenuItem("颜色选取(C)", new ImageIcon("color.gif"));
menuitem.addActionListener(new ButtonListener());
drawMenu.add(menuitem);
drawMenu.addSeparator();
//粗细
menuitem = new JMenuItem("线条大小(L)", new ImageIcon("change.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String inputValue = JOptionPane.showInputDialog("请输入线条的大小 (0.0 - 5.0)", "1.0");
penSize = Float.parseFloat(inputValue);
}
}
);
drawMenu.add(menuitem);
drawMenu.addSeparator();
JMenu draw = new JMenu("给制图形(D)");
drawMenu.add(draw);
menuitem = new JMenuItem("矩形绘制(R)", new ImageIcon("Rectangle.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag = 1;
}
});
draw.add(menuitem);
menuitem = new JMenuItem("圆形绘制(C)", new ImageIcon("round.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag = 2;
}
});
draw.add(menuitem);
menuitem = new JMenuItem("线条绘制(L)", new ImageIcon("line.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag = 3;
}
});
draw.add(menuitem);
draw.addSeparator();
menuitem = new JMenuItem("画笔操作(P)", new ImageIcon("pen.gif"));
menuitem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag = 0;
}
});
draw.add(menuitem);
menubar.add(drawMenu);
/* 帮助菜单 */
helpMenu = new JMenu("帮助(H)");
menuitem = new JMenuItem("关于 绘图工具(A)");
menuitem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String str = new String("java程序设计实验二 绘图工具\n设计人:戴浩彬\n完成时间:2008-12-9");
JOptionPane.showMessageDialog(null, str);
}
});
helpMenu.add(menuitem);
menubar.add(helpMenu);
return menubar;
}
//响应颜色选取菜单的事件
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
dialog.setVisible(true);
color = colorChooser.getColor();
}
}
/**
* 构造函数,初始化
* @param title
*/
public MyPaint(String title){
super(title);
colorChooser = new JColorChooser();
dialog = JColorChooser.createDialog(container, "Color Chooser", false, colorChooser, new ButtonListener(), new ButtonListener());
toolbar = createToolBar();
}
//内容面板
Container container = getContentPane();
//座标的记录
int oldX, oldY, newX, newY;
//画图面板
DrawingPanel panel = new DrawingPanel();
//画笔颜色
Color color = Color.blue;
//程序的提示信息
JLabel prompt = new JLabel("欢迎使用本绘图工具绘制图形", new ImageIcon("message0.gif"), JLabel.LEFT);
//颜色选取器
JColorChooser colorChooser = null;
//颜色选取的对话框
JDialog dialog = null;
//画笔的大小
float penSize = 1.0f;
//画笔的状态
int flag = 0;
//工具栏
JToolBar toolbar;
//文件选取器
JFileChooser filechooser;
public JToolBar createToolBar(){
JToolBar toolBar = new JToolBar(0);
JButton button = new JButton(new ImageIcon("newfile.gif"));
button.setToolTipText("新建文件");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showDialog(container, "新建文件");
}
});
toolBar.add(button);
button = new JButton(new ImageIcon("openfile.gif"));
button.setToolTipText("打开文件");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showOpenDialog(container);
}
});
toolBar.add(button);
button = new JButton(new ImageIcon("save.gif"));
button.setToolTipText("保存文件");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
filechooser = new JFileChooser();
filechooser.showSaveDialog(container);
}
});
toolBar.add(button);
toolBar.addSeparator();
button = new JButton(new ImageIcon("pen.gif"));
button.setToolTipText("使用画笔绘图");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent
评论1
最新资源