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

📄 painter.java

📁 可以话空心和实心的巨星
💻 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 + -