📄 painter.java
字号:
package painter;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
public class Painter extends JFrame
{
private CanvasPanel canvasPanel;
private ToolButtonPanel toolButtonPanel;
private ColorButtonPanel colorButtonPanel;
private Container mainContainer;
private String fileName;
JMenuBar mainBar;
JMenu fileMenu, editMenu, setColorMenuItem, aboutMenu;
JMenuItem newMenuItem, openMenuItem, closeMenuItem, saveMenuItem, saveAsMenuItem, exitMenuItem, undoMenuItem, redoMenuItem, foreGroundMenuItem, backGroundMenuItem, authorMenuItem;
public Painter()
{
super("First painting program");
fileName = null;
mainBar = new JMenuBar();
setJMenuBar(mainBar);
/*--------创建主菜单工具栏并设计其规格,框架名和生成文件名--------*/
fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');//设置file菜单的快捷键
newMenuItem = new JMenuItem("New");
openMenuItem = new JMenuItem("Open");
closeMenuItem = new JMenuItem("Close");
saveMenuItem = new JMenuItem("Save");
saveAsMenuItem = new JMenuItem("Save As");
exitMenuItem = new JMenuItem("Exit");
newMenuItem.addActionListener(new MenuButtonListener());
openMenuItem.addActionListener(new MenuButtonListener());
saveMenuItem.addActionListener(new MenuButtonListener());
saveAsMenuItem.addActionListener(new MenuButtonListener());
closeMenuItem.addActionListener(new MenuButtonListener());
exitMenuItem.addActionListener(new MenuButtonListener());
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(closeMenuItem);
fileMenu.addSeparator();
fileMenu.add(saveMenuItem);
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
/*----设置file菜单的选项名,监听器,并将各选项加到filemenu-----*/
editMenu = new JMenu("Edit");
editMenu.setMnemonic('E');//同上,快捷键设置
undoMenuItem = new JMenuItem("Undo");
redoMenuItem = new JMenuItem("Redo");
setColorMenuItem = new JMenu("Set Color");
foreGroundMenuItem = new JMenuItem("Set ForeGround");
backGroundMenuItem = new JMenuItem("Set BackGround");
undoMenuItem.addActionListener(new MenuButtonListener());
redoMenuItem.addActionListener(new MenuButtonListener());
foreGroundMenuItem.addActionListener(new MenuButtonListener());
backGroundMenuItem.addActionListener(new MenuButtonListener());
setColorMenuItem.add(foreGroundMenuItem);
setColorMenuItem.add(backGroundMenuItem);
editMenu.add(undoMenuItem);
editMenu.add(redoMenuItem);
editMenu.addSeparator();
editMenu.add(setColorMenuItem);
/*-----设置edit菜单的选项名,监听器,并将各个选项加到editmenu------*/
aboutMenu = new JMenu("About");
aboutMenu.setMnemonic('A');
authorMenuItem = new JMenuItem("Author");
authorMenuItem.addActionListener(new MenuButtonListener());
aboutMenu.add(authorMenuItem);
/*-------设置about菜单的选项名,监听器,并将选项加到aboutmenu----*/
mainBar.add(fileMenu);
mainBar.add(editMenu);
mainBar.add(aboutMenu);
/*------将设置好的filemenu,editmenu和aboutmenu加到主菜单栏----------*/
canvasPanel = new CanvasPanel();
toolButtonPanel = new ToolButtonPanel(canvasPanel);
colorButtonPanel = new ColorButtonPanel(canvasPanel);
/*----创建画布板,工具按纽板和调色板对象-------*/
mainContainer = getContentPane();
mainContainer.add(toolButtonPanel,BorderLayout.NORTH);
mainContainer.add(canvasPanel,BorderLayout.CENTER);
mainContainer.add(colorButtonPanel,BorderLayout.SOUTH);
setSize(600,500);//设置窗体大小
this.setResizable(false);//规定窗体不可调整大小
setVisible(true);//设置窗体可显示
addWindowListener (
new WindowAdapter () //窗口适配器,WindowListener的一个最简单实现
{
public void windowClosing (WindowEvent e) //窗口关闭事件
{
System.exit(0);//程序退出
}
public void windowDeiconified (WindowEvent e) //窗口被图标化(最小化)事件
{
canvasPanel.repaint();//重置画布板
}
public void windowActivated (WindowEvent e) //激活窗口(选定窗口为高亮显示形态)事件
{
canvasPanel.repaint();//重置画布板
}
}
);
}
/*------主窗口基本设置---------*/
public class MenuButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == newMenuItem || event.getSource() == closeMenuItem)
{
canvasPanel.clearCanvas();
canvasPanel.setDrawMode(0);
canvasPanel.setForeGroundColor(Color.WHITE);
canvasPanel.setBackGroundColor(Color.BLACK);
canvasPanel.repaint();
}//新建和关闭被按下后的处理,清空画布板,设置绘画模式,前景色,背景色,重置画布板
if(event.getSource() == exitMenuItem)
{
System.exit(0);
}//退出
if(event.getSource() == foreGroundMenuItem)
{
colorButtonPanel.setForeGroundColor();
canvasPanel.repaint();
}//选择前景色,下面类推
if(event.getSource() == backGroundMenuItem)
{
colorButtonPanel.setBackGroundColor();
canvasPanel.repaint();
}
if(event.getSource() == authorMenuItem)
{
JOptionPane.showMessageDialog(Painter.this,"Author :Frankie_king_bob_curley","Painter",JOptionPane.INFORMATION_MESSAGE);
canvasPanel.repaint();
}
if(event.getSource() == saveMenuItem)
{
canvasPanel.SaveCanvasToFile();
}
if(event.getSource() == saveAsMenuItem)
{
canvasPanel.SaveAsCanvasToFile();
}
if(event.getSource() == openMenuItem)
{
canvasPanel.OpenCanvasFile();
}
if(event.getSource() == undoMenuItem)
{
canvasPanel.undo();
}
if(event.getSource() == redoMenuItem)
{
canvasPanel.redo();
}
}
}
/*---------设置各个活动事件的处理----------*/
public static void main(String args[])
{
Painter application = new Painter();
application.show();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame默认退出语句
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -