📄 drawingboard.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 + -