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

📄 009fe14370a6001c12d3a6ace67d4745

📁 用JAVA语言编制一个画图板
💻
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;import java.awt.geom.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class MiniDrawPad extends JFrame //主类,扩展了JFrame类,用来生成主界面 {  private ObjectInputStream  input;  private ObjectOutputStream output;   //定义输入输出流,用来调用和保存图像文件  private JButton choices[];           //按钮数组,存放以下名称的功能按钮  private String names[]={          "New",          "Open",          "Save",    //基本操作按钮,包括"新建"、"打开"、"保存"       /*定义画图板上面有的基本的几个绘图单元按钮*/          "Pencil",		//铅笔画,也就是用鼠标拖动着随意绘图          "Line",		//绘制直线          "Rect",		//绘制空心矩形          "fRect",		//绘制以指定颜色填充的实心矩形          "Oval",		//绘制空心椭圆          "fOval",		//绘制以指定颜色填充的实心椭圆          "Circle",		//绘制空心圆形          "fCircle",	//绘制以指定颜色填充的实心圆形          "RoundRect",	//绘制空心圆角矩形          "frRect",		//绘制以指定颜色填充的实心圆角矩形          "Rubber",		//橡皮擦,可用来擦去已经绘制好的图案          "Color",		//选择颜色按钮,可用来选择需要的颜色          "Stroke",		//选择线条粗细的按钮,输入需要的数值可以实现绘图线条粗细的变化          "Word"		//输入文字按钮,可以在绘图板上实现文字输入          };  private String styleNames[]={            " 宋体 " , " 隶书 " , " 华文彩云 " , " 仿宋_GB2312 " , " 华文行楷 " ,            " 方正舒体 " , " Times New Roman " , " Serif " , " Monospaced " ,            " SonsSerif " , " Garamond "            };            //可供选择的字体项  private Icon items[];  private String tipText[]={      //定义鼠标移动到相应按钮上面停留时显示的提示说明条                "新建",                "打开",                "保存",                "铅笔画",                "直线",                "空心矩形",                "实心矩形",                "空心椭圆",                "实心椭圆",                "空心圆形",                "实心圆形",                "空心圆角矩形",                "实心圆角矩形",                "橡皮擦",                "选择颜色",                "设置线条粗细",                "输入文本"       };  JToolBar buttonPanel ;		       //定义按钮面板  private JLabel statusBar;            //显示鼠标状态的提示条  private DrawPanel drawingArea;       //画图区域  private int width=680,height=550;    //定义画图区域初始大小  drawings[] itemList=new drawings[500];//用来存放基本图形的数组  private int currentChoice=3;           //设置默认画图状态为随笔画  int index=0;                           //当前已经绘制的图形数目  private Color color=Color.black;       //当前画笔颜色  int R,G,B;                             //用来存放当前色彩值  int f1,f2;                  //用来存放当前字体风格  String style1;              //用来存放当前字体  private float stroke=1.0f;  //设置画笔粗细,默认值为1.0f  JCheckBox bold,italic;      //定义字体风格选择框                              //bold为粗体,italic为斜体,二者可以同时使用  JComboBox styles;  public MiniDrawPad()        //构造函数  {   super("简易画图板1.0");   JMenuBar bar=new JMenuBar();		//定义菜单条   JMenu fileMenu=new JMenu("文件");   fileMenu.setMnemonic('F');//新建文件菜单项   JMenuItem newItem=new JMenuItem("新建");   newItem.setMnemonic('N');   newItem.addActionListener(          new ActionListener(){                  public void actionPerformed(ActionEvent e)                  {                   newFile();		//如果被触发,则调用新建文件函数段                  }          }   );   fileMenu.add(newItem);//保存文件菜单项   JMenuItem saveItem=new JMenuItem("保存");   saveItem.setMnemonic('S');   saveItem.addActionListener(          new ActionListener(){                  public void actionPerformed(ActionEvent e)                  {                   saveFile();		//如果被触发,则调用保存文件函数段                  }          }   );   fileMenu.add(saveItem);//打开文件菜单项   JMenuItem loadItem=new JMenuItem("打开");   loadItem.setMnemonic('L');   loadItem.addActionListener(          new ActionListener(){                  public void actionPerformed(ActionEvent e)                  {                   loadFile();		//如果被触发,则调用打开文件函数段                  }          }   );   fileMenu.add(loadItem);   fileMenu.addSeparator();//退出菜单项   JMenuItem exitItem=new JMenuItem("退出");   exitItem.setMnemonic('X');   exitItem.addActionListener(          new ActionListener(){                  public void actionPerformed(ActionEvent e)                  {                   System.exit(0);	//如果被触发,则退出画图板程序                  }          }   );   fileMenu.add(exitItem);   bar.add(fileMenu);//设置颜色菜单条   JMenu colorMenu=new JMenu("颜色");   colorMenu.setMnemonic('C');//选择颜色菜单项   JMenuItem colorItem=new JMenuItem("选择颜色");   colorItem.setMnemonic('O');   colorItem.addActionListener(           new ActionListener(){                   public void actionPerformed(ActionEvent e)                   {                    chooseColor();	//如果被触发,则调用选择颜色函数段                   }       }      );   colorMenu.add(colorItem);   bar.add(colorMenu);//设置线条粗细菜单条    JMenu strokeMenu=new JMenu("线条");    strokeMenu.setMnemonic('S');//设置线条粗细菜单项    JMenuItem strokeItem=new JMenuItem("设置线条");    strokeItem.setMnemonic('K');    strokeItem.addActionListener(           new ActionListener(){                   public void actionPerformed(ActionEvent e)                    {                     setStroke();                     }                   }              );           strokeMenu.add(strokeItem);           bar.add(strokeMenu);//设置提示菜单条    JMenu helpMenu=new JMenu("帮助");    helpMenu.setMnemonic('H');//设置提示菜单项    JMenuItem aboutItem=new JMenuItem("关于画图板");    aboutItem.setMnemonic('A');    aboutItem.addActionListener(       new ActionListener(){         public void actionPerformed(ActionEvent e)           {             JOptionPane.showMessageDialog(null,              "这是一个简易画图板,作者:陈永 "," 画图板程序说明 ",                    JOptionPane.INFORMATION_MESSAGE );            }        }      );    helpMenu.add(aboutItem);    bar.add(helpMenu);    items=new ImageIcon[names.length];//创建各种基本图形的按钮    drawingArea=new DrawPanel();    choices=new JButton[names.length];    buttonPanel = new JToolBar( JToolBar.VERTICAL ) ;    buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ;    ButtonHandler handler=new ButtonHandler();    ButtonHandler1 handler1=new ButtonHandler1();    //***************************************************************//导入需要的图形图标,这些图标都存放在与源文件相同的目录下面    for(int i=0;i<choices.length;i++)    {     items[i]=new ImageIcon(names[i] + ".gif" );     choices[i]=new JButton("",items[i]);     choices[i].setToolTipText(tipText[i]);     buttonPanel.add(choices[i]);    }//****************************************************************    //将动作侦听器加入按钮里面    for(int i=3;i<choices.length-3;i++)    {choices[i].addActionListener(handler);}    choices[0].addActionListener(        new ActionListener(){         public void actionPerformed(ActionEvent e)             { newFile(); }        }     );    choices[1].addActionListener(        new ActionListener(){         public void actionPerformed(ActionEvent e)           { loadFile(); }          }     );    choices[2].addActionListener(        new ActionListener(){         public void actionPerformed(ActionEvent e)           { saveFile(); }        }     );    choices[choices.length-3].addActionListener(handler1);    choices[choices.length-2].addActionListener(handler1);    choices[choices.length-1].addActionListener(handler1);  //字体风格选择    styles=new JComboBox(styleNames);    styles.setMaximumRowCount(10);    styles.addItemListener(     new ItemListener(){       public void itemStateChanged(ItemEvent e)        { style1=styleNames[styles.getSelectedIndex()];}      }    );//字体选择    bold=new JCheckBox("BOLD");    italic=new JCheckBox("ITALIC");    checkBoxHandler cHandler=new checkBoxHandler();    bold.addItemListener(cHandler);    italic.addItemListener(cHandler);    JPanel wordPanel=new JPanel();    buttonPanel.add(bold);    buttonPanel.add(italic);    buttonPanel.add(styles);    styles.setMinimumSize(  new Dimension ( 50, 30 ) );    styles.setMaximumSize(new Dimension ( 100, 30 ) );    Container c=getContentPane();    super.setJMenuBar( bar );    c.add(buttonPanel,BorderLayout.NORTH);    c.add(drawingArea,BorderLayout.CENTER);    statusBar=new JLabel();    c.add(statusBar,BorderLayout.SOUTH);    statusBar.setText("     欢迎使用此简易画图板  :)");    createNewItem();    setSize(width,height);    show();  }//按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作public class ButtonHandler implements ActionListener {  public void actionPerformed(ActionEvent e)  { for(int j=3;j<choices.length-3;j++)    {if(e.getSource()==choices[j])      {currentChoice=j;       createNewItem();       repaint();}   }  } }//按钮侦听器ButtonHanler1类,用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作public class ButtonHandler1 implements ActionListener {  public void actionPerformed(ActionEvent e)  {    if(e.getSource()==choices[choices.length-3])        {chooseColor();}    if(e.getSource()==choices[choices.length-2])        {setStroke();}    if(e.getSource()==choices[choices.length-1])        {JOptionPane.showMessageDialog(null, "在画图区域点击鼠标,确定文本输入位置",          "Hint",JOptionPane.INFORMATION_MESSAGE );          currentChoice=14;          createNewItem();          repaint();        }    } }//鼠标事件mouseA类,继承了MouseAdapter,用来完成鼠标相应事件操作 class mouseA extends MouseAdapter { public void mousePressed(MouseEvent e)    {statusBar.setText(" 按下鼠标 @:[" + e.getX() +                              ", " + e.getY() + "]");//设置状态提示     itemList[index].x1=itemList[index].x2=e.getX();     itemList[index].y1=itemList[index].y2=e.getY();          //如果当前选择的图形是随笔画或者橡皮擦,则进行下面的操作    if(currentChoice==3||currentChoice==13)    {     itemList[index].x1=itemList[index].x2=e.getX();     itemList[index].y1=itemList[index].y2=e.getY();     index++;     createNewItem();     }        //如果当前选择的图形式文字输入,则进行下面操作    if(currentChoice==14)     {      itemList[index].x1=e.getX();      itemList[index].y1=e.getY();      String input;      input=JOptionPane.showInputDialog("请输入文本");      itemList[index].s1=input;      itemList[index].x2=f1;      itemList[index].y2=f2;      itemList[index].s2=style1;      index++;      currentChoice=14;      createNewItem();      drawingArea.repaint();      }    }   public void mouseReleased(MouseEvent e)    {statusBar.setText("     释放鼠标 @:[" + e.getX() +                              ", " + e.getY() + "]");      if(currentChoice==3||currentChoice==13)       {         itemList[index].x1=e.getX();         itemList[index].y1=e.getY();       }      itemList[index].x2=e.getX();      itemList[index].y2=e.getY();      repaint();      index++;      createNewItem();    }   public void mouseEntered(MouseEvent e)   {statusBar.setText("     鼠标进入 @:[" + e.getX() +                              ", " + e.getY() + "]"); }   public void mouseExited(MouseEvent e)   {statusBar.setText("     鼠标离开 @:[" + e.getX() +

⌨️ 快捷键说明

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