?? 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 + -