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

📄 drawingboard.java

📁 编译器
💻 JAVA
字号:
package DrawingBoard;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class DrawingBoard extends JFrame implements ActionListener
{
  JPanel p1 = new JPanel();
  JPanel p2 = new JPanel();
  // Define Buttons 
  private JButton jbtScribble = new JButton(new ImageIcon("images/logo1.gif"));
  private JButton jbtDrawline = new JButton(new ImageIcon("images/logo2.gif"));
  private JButton jbtDrawrect = new JButton(new ImageIcon("images/logo3.gif"));
  private JButton jbtDrawoval = new JButton(new ImageIcon("images/logo4.gif"));
  private JButton jbtBlack = new JButton(new ImageIcon("images/logo5.gif"));
  private JButton jbtGreen = new JButton(new ImageIcon("images/logo6.gif"));
  private JButton jbtRed = new JButton(new ImageIcon("images/logo7.gif"));
  private JButton jbtYellow = new JButton(new ImageIcon("images/logo8.gif"));
  private JButton jbtDrawAndFillrect = new JButton(new ImageIcon("images/logo9.gif"));
  private JButton jbtDrawAndFilloval = new JButton(new ImageIcon("images/logo10.gif"));
  private JButton jbtShowColor = new JButton(new ImageIcon("images/logo11.gif"));
 
  // Menu items "New", "Open".......
  private JMenuItem jmiNew, jmiOpen;
  private JMenuItem jmiToolbox, jmiColorbox;
  private JMenuItem jmiClearup;
  private JMenuItem jmiClose;
  
  // Define two border to decorate the panel and button
  Border border1 = new BevelBorder(BevelBorder.RAISED);
  Border border2 = new BevelBorder(BevelBorder.LOWERED);
  
  //the symbol to show which button is pressed in panel1 
  private int pressedButton = 0;// Define a symbol to show witch button is pressed in panel1 
                                // 0:no button is pressed in panel1
                                // 1:jbtScribble button is pressed in panel1
                                // 2:jbtDrawline button is pressed in panel1
                                // 3:jbtDrawrect button is pressed in panel1
                                // 4:jbtDrawoval button is pressed in panel1
 
  private int colornumber = 1;
  //
  private int toolboxview = 1;//the symbol toshow if the toolbox is viewed
  private int colorboxview = 1;//the symbol toshow if the colorbox is viewed  
  
  
  // main method
  public static void main(String[] args)
  {
    DrawingBoard frame = new DrawingBoard();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(540, 410);
    frame.setVisible(true);
  }
  
  // Default Constructor
  public DrawingBoard()
  {
    setTitle("Drawing Board");

    // Create menu bar
    JMenuBar jmb = new JMenuBar();

    // Set menu bar to the frame
    setJMenuBar(jmb);

   
    /////////////////////////////Add menu...to menu bar/////////////////////////
    // Add menu "File" to menu bar
    JMenu fileMenu = new JMenu("File");
    fileMenu.setMnemonic('F');
    jmb.add(fileMenu);
    
    // Add menu "Edit" to menu bar
    JMenu editMenu = new JMenu("Edit");
    editMenu.setMnemonic('E');
    jmb.add(editMenu);
    
    // Add menu "View" to menu bar
    JMenu viewMenu = new JMenu("View");
    viewMenu.setMnemonic('V');
    jmb.add(viewMenu);
    
    // Add menu "Image" to menu bar
    JMenu imageMenu = new JMenu("Image");
    imageMenu.setMnemonic('I');
    jmb.add(imageMenu);
    
    // Add menu "Color" to menu bar
    JMenu colorMenu = new JMenu("Color");
    colorMenu.setMnemonic('C');
    jmb.add(colorMenu);

    // Add menu "Exit" in menu bar
    JMenu exitMenu = new JMenu("Exit");
    exitMenu.setMnemonic('E');
    jmb.add(exitMenu);
    ////////////////////////////////////////////////////////////////////////////
   
    //////////////////////Add menu items with mnemonics to menu/////////////////
    fileMenu.add(jmiNew = new JMenuItem("New", 'N'));
    fileMenu.add(jmiOpen = new JMenuItem("Open", 'O'));
    
    viewMenu.add(jmiToolbox = new JMenuItem("Toolbox", 'T'));
    viewMenu.add(jmiColorbox = new JMenuItem("Colorbox", 'C'));
    //viewMenu.add(jmiZoom = new JMenuItem("Zoom", 'Z'));
    
    imageMenu.add(jmiClearup = new JMenuItem("Clearup", 'C'));
    
    exitMenu.add(jmiClose = new JMenuItem("Close", 'C'));
    ////////////////////////////////////////////////////////////////////////////
    
    //////////////////////Set keyboard accelerators/////////////////////////////
    jmiNew.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
    jmiOpen.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
    jmiToolbox.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.CTRL_MASK));
    jmiColorbox.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK));
    //jmiZoom.setAccelerator(
      //KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
    jmiClearup.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK));
    jmiClose.setAccelerator(
      KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
    ////////////////////////////////////////////////////////////////////////////
    
    ///////////////////////////////////////panel1 Toolbox////////////////////////////////
    //JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(12,1));
    //p1.setBackground(Color.LIGHT_GRAY);
    //p1.setLayout(new FlowLayout(FlowLayout.LEADING));
        
    p1.setBorder(border1);
        
    jbtScribble.setContentAreaFilled(false);
    jbtDrawline.setContentAreaFilled(false);
    jbtDrawoval.setContentAreaFilled(false);
    jbtDrawrect.setContentAreaFilled(false);
    jbtDrawAndFillrect.setContentAreaFilled(false);
    jbtDrawAndFilloval.setContentAreaFilled(false);
        
    jbtScribble.setBorder(border1);
    jbtDrawline.setBorder(border1);
    jbtDrawoval.setBorder(border1);
    jbtDrawrect.setBorder(border1);
    jbtDrawAndFillrect.setBorder(border1);
    jbtDrawAndFilloval.setBorder(border1);
    
    jbtScribble.setToolTipText("Drawing cribble");
    jbtDrawline.setToolTipText("Drawing line");
    jbtDrawoval.setToolTipText("Drawing oval");
    jbtDrawrect.setToolTipText("Drawing rect");
    jbtDrawAndFillrect.setToolTipText("Drawing and filling rect");
    jbtDrawAndFilloval.setToolTipText("Drawing and filling oval");
    
    jbtScribble.setSize(30,28);
    jbtDrawline.setSize(30,28);
    jbtDrawoval.setSize(30,28);
    jbtDrawrect.setSize(30,28);
    jbtDrawAndFillrect.setSize(30,28);
    jbtDrawAndFilloval.setSize(30,28);
    /*jbtScribble.setBorderPainted(false);
    jbtDrawline.setBorderPainted(false);
    jbtDrawoval.setBorderPainted(false);
    jbtDrawrect.setBorderPainted(false);*/    
        
    p1.add(jbtScribble);
    p1.add(jbtDrawline);
    p1.add(jbtDrawrect);
    p1.add(jbtDrawoval);
    p1.add(jbtDrawAndFillrect);
    p1.add(jbtDrawAndFilloval);
    /////////////////////////////////////////////////////////////////////////////////////////////
        
    //////////////////////////////////////////////panel2 colorbox/////////////////
    //JPanel p2 = new JPanel();
    //p2.setLayout(new GridLayout(1,20,2,2));
    p2.setLayout(new FlowLayout(FlowLayout.LEFT));
    p2.setBorder(border1);
    //jbtBlack.setContentAreaFilled(false);
    jbtGreen.setContentAreaFilled(false);
    jbtRed.setContentAreaFilled(false);
    jbtYellow.setContentAreaFilled(false);
    jbtShowColor.setContentAreaFilled(false);
        
    jbtBlack.setBorder(border2);
    jbtGreen.setBorder(border2);
    jbtRed.setBorder(border2);
    jbtYellow.setBorder(border2);
    jbtShowColor.setBorder(border2);
    
    jbtBlack.setSize(21,21);
    jbtGreen.setSize(21,21);
    jbtRed.setSize(21,21);
    jbtYellow.setSize(21,21);
    jbtShowColor.setSize(21,21);
             
    p2.add(jbtShowColor);
    p2.add(jbtBlack);
    p2.add(jbtGreen);
    p2.add(jbtRed);
    p2.add(jbtYellow);
    /*for(int i=0;i<14;i++)
    {
    	p2.add(new JPanel());
    }*/
    
    ////////////////////////////////////////////////////////////////////////////////////////////

    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1, BorderLayout.WEST);
    getContentPane().add(p2, BorderLayout.SOUTH);
    getContentPane().add(new DrawingMethod(), BorderLayout.CENTER);
  
    ////////////////////////////Register listeners//////////////////////////////
    jmiNew.addActionListener(this);
    jmiOpen.addActionListener(this);
    jmiToolbox.addActionListener(this);
    jmiColorbox.addActionListener(this);
    //jmiZoom.addActionListener(this);
    jmiClearup.addActionListener(this);
    jmiClose.addActionListener(this);
    
    jbtScribble.addActionListener(this);
    jbtDrawline.addActionListener(this);
    jbtDrawrect.addActionListener(this);
    jbtDrawoval.addActionListener(this);
    jbtDrawAndFillrect.addActionListener(this);
    jbtDrawAndFilloval.addActionListener(this);
    
    jbtBlack.addActionListener(this);
    jbtGreen.addActionListener(this);
    jbtRed.addActionListener(this);
    jbtYellow.addActionListener(this);
    ////////////////////////////////////////////////////////////////////////////
  }
  
  // Handle ActionEvent from buttons and menu items
  public void actionPerformed(ActionEvent e)
  {
  	//choose the method of drawing
  	if(e.getSource() == jbtScribble)
  	{
  		DrawingMethod.drawingmethod = 0;
  		pressedButton = 1;
  	}
  	else if(e.getSource() == jbtDrawline)
  	{
  		DrawingMethod.drawingmethod = 1;
  		pressedButton = 2;
  	}
  	else if(e.getSource() == jbtDrawrect)
  	{
  		DrawingMethod.drawingmethod = 2;
  		pressedButton = 3;
  	}
  	else if(e.getSource() == jbtDrawoval)
  	{
  		DrawingMethod.drawingmethod = 3;
  		pressedButton = 4; 
  	}
  	else if(e.getSource() == jbtDrawAndFillrect)
  	{
  		DrawingMethod.drawingmethod = 4;
  		pressedButton = 5; 
  	}
  	else if(e.getSource() == jbtDrawAndFilloval)
  	{
  		DrawingMethod.drawingmethod = 5;
  		pressedButton = 6; 
  	}
  	
  	//choose color
  	else if(e.getSource() == jbtBlack)
  	{
  		DrawingMethod.pencolor = 0;
  		colornumber = 11;
  	}
  	else if(e.getSource() == jbtGreen)
  	{
  		DrawingMethod.pencolor = 1;
  		colornumber = 12;
  	}
  	else if(e.getSource() == jbtRed)
  	{
  		DrawingMethod.pencolor = 2;
  		colornumber = 13;
  	}
  	else if(e.getSource() == jbtYellow)
  	{
  		DrawingMethod.pencolor = 3;
  		colornumber = 14;
  	}
  	
  	//set clearup symbol to true
  	else if(e.getSource() == jmiClearup)
  	{
  		DrawingMethod.clearup = true;
  	}
  	
  	//control whether to show the toolbox
  	else if(e.getSource() == jmiToolbox)
  	{
  		toolboxview = 1 - toolboxview;
  		if(toolboxview == 0)
  		{
  			p1.setVisible(false);
  		}
  		else
  		{
  			p1.setVisible(true);
  		}
  		DrawingMethod.whetherintobuffer = false;
  		DrawingMethod.isdraw = false;
  	}
  	
  	//control whether to show the colorbox
  	else if(e.getSource() == jmiColorbox)
  	{
  		colorboxview = 1 - colorboxview;
  		if(colorboxview == 0)
  		{
  			p2.setVisible(false);
  		}
  		else
  		{
  			p2.setVisible(true);
  		}
  		DrawingMethod.whetherintobuffer = false;
  		DrawingMethod.isdraw = false;
  	}
  	
  	/*if(e.getSource()==jmiNew)//保存图画
    {
        savePicture.setVisible(true);
        try{
             File fileout = new File(savePicture.getDirectory(),savePicture.getFile());
             picOut = new FileOutputStream(fileout);
             VOut = new ObjectOutputStream(picOut);
             VOut.writeObject(paintInfo);
             VOut.close();
           }
       catch(IOException IOe) 
       {
           System.out.println("can not write object");
       }
    }*/
  	
  	
  	//close the board
  	else if(e.getSource() == jmiClose)
  	{
  		System.exit(0);
  	}
  	
  	//to change the color show bar
  	String colorname = "images/logo" + colornumber + ".gif";
    jbtShowColor.setIcon(new ImageIcon(colorname));
  
  	//show the pressed button in panel1
  	switch(pressedButton)
  	{
  		case 1:jbtScribble.setBorder(border2);
  		       jbtDrawline.setBorder(border1);
               jbtDrawrect.setBorder(border1);
               jbtDrawoval.setBorder(border1);
               jbtDrawAndFillrect.setBorder(border1);
               jbtDrawAndFilloval.setBorder(border1);
               break;
        case 2:jbtScribble.setBorder(border1);
  		       jbtDrawline.setBorder(border2);
               jbtDrawrect.setBorder(border1);
               jbtDrawoval.setBorder(border1);
               jbtDrawAndFillrect.setBorder(border1);
               jbtDrawAndFilloval.setBorder(border1);
               break;
        case 3:jbtScribble.setBorder(border1);
  		       jbtDrawline.setBorder(border1);
               jbtDrawrect.setBorder(border2);
               jbtDrawoval.setBorder(border1);
               jbtDrawAndFillrect.setBorder(border1);
               jbtDrawAndFilloval.setBorder(border1);
               break;
        case 4:jbtScribble.setBorder(border1);
  		       jbtDrawline.setBorder(border1);
               jbtDrawrect.setBorder(border1);
               jbtDrawoval.setBorder(border2);
               jbtDrawAndFillrect.setBorder(border1);
               jbtDrawAndFilloval.setBorder(border1);
               break;
        case 5:jbtScribble.setBorder(border1);
  		       jbtDrawline.setBorder(border1);
               jbtDrawrect.setBorder(border1);
               jbtDrawoval.setBorder(border1);
               jbtDrawAndFillrect.setBorder(border2);
               jbtDrawAndFilloval.setBorder(border1);
               break;
        case 6:jbtScribble.setBorder(border1);
  		       jbtDrawline.setBorder(border1);
               jbtDrawrect.setBorder(border1);
               jbtDrawoval.setBorder(border1);
               jbtDrawAndFillrect.setBorder(border1);
               jbtDrawAndFilloval.setBorder(border2);
  	}
  }
}

⌨️ 快捷键说明

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