?? mypaint.java
字號:
/**
* 打開菜單項事件的監聽器,用于打開文件
*
*/
openItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
loadButtonActionPerformed(e);
}
}
);
/**
* 保存菜單項事件監聽器,用于保存文件
*/
saveItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
saveButtonActionPerformed(e);
}
}
);
/**
* 導出菜單項事件監聽器,用于導出文件
*
*/
emportItem.addActionListener(
new ActionListener(){
public void actionPerformed( ActionEvent e )
{
emportButtonAciontPerformed(e);
}
}
);
/**
* 退出菜單項事件監聽器,退出應用程序
*/
exitItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
System.exit( 0 );
}
}
);
// 定義編輯菜單
editMenu = new JMenu( "編輯(E)" );
// 定義編輯菜單下的相關項目
// 定義撤消菜單項,并設置快捷鍵為"U"
undoItem = new JMenuItem( "撤消(U)",'U' );
// 定義重復菜單項,并設置快捷鍵為'R'
redoItem = new JMenuItem( "重復(R)",'R' );
// 設置撤消菜單項的加速器為Ctrl+Z
undoItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Z, InputEvent.CTRL_MASK, false ) );
// 設置重復菜單項的加速器為Ctrl+Y
redoItem.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Y, InputEvent.CTRL_MASK, false ) );
/**
* 撤消菜單項事件監聽器,撤消已操作的動作,進行任何操作時,撤消菜單項為false
*/
undoItem.setEnabled( false );
undoItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
if( drawPanel.canUnDo())
{
drawPanel.unDo();
}
else
{
undoItem.setEnabled( false );
redoItem.setEnabled( true );
}
}
}
);
/**
* 重復菜單項事件監聽器,取消剛才撤消操作,在進行任何操作時,重復菜單項為false
*/
redoItem.setEnabled( false );
redoItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
if( drawPanel.canReDo() )
{
drawPanel.reDo();
}
else
{
undoItem.setEnabled( true );
redoItem.setEnabled( false );
}
}
}
);
//定義圖象菜單
imageMenu = new JMenu( "圖象(I)" );
// 定義圖象菜單下的相關項目
// 定義清除圖象菜單項,并設置快捷鍵為'C'
clearItem = new JMenuItem( "清除圖象(C)",'C' );
/**
* 設置清除圖象菜單項事件監聽器
*/
clearItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
redoItem.setEnabled( false );
clearItemActionPerformed( e );
}
}
);
// 設置顏色菜單
colorMenu = new JMenu( "顏色(C)" );
// 設置前景色菜單項,并設置快捷鍵為'F'
foregroundItem = new JMenuItem( "前景色(F)", 'F' );
/**
* 前景色菜單項事件監聽器,用于設置當前顏色
*/
foregroundItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
foregroundItemActionPerformed( e );
}
}
);
// 設置背景色菜單項,并設置快捷鍵為'B'
backgroundItem = new JMenuItem( "背景色(B)",'B' );
/**
* 背景色菜單項事件監聽器,用于設置畫板的背景
*/
backgroundItem.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
backgroundItemActionPerformed( e );
}
}
);
// 定義幫助菜單
helpMenu = new JMenu( "幫助(H)" );
// 定義關于畫圖菜單項,并設置快捷鍵為'A'
aboutItem = new JMenuItem( "關于畫圖(A)",'A' );
aboutItem.addActionListener(
new MyPaint_AboutItem_actionAdapter( this )
);
// 設置菜單欄
menuBar.add( fileMenu );
menuBar.add( editMenu );
menuBar.add( imageMenu );
menuBar.add( colorMenu );
menuBar.add( helpMenu );
fileMenu.add( newItem );
fileMenu.add( openItem );
fileMenu.add( saveItem );
fileMenu.add( emportItem );
fileMenu.add( exitItem );
editMenu.add( undoItem );
editMenu.add( redoItem );
imageMenu.add( clearItem );
colorMenu.add( foregroundItem );
colorMenu.add( backgroundItem );
helpMenu.add( aboutItem );
// 設置工具的相關部件
// 設置ctrlPanel的格局
ctrlPanel.setLayout( new GridBagLayout() );
// 突出斜面
ctrlPanel.setBorder( new SoftBevelBorder( BevelBorder.RAISED ) );
// 設置mediumPanel1的格局,從上到下縱向布置組件
mediumPanel1.setLayout( new BoxLayout( mediumPanel1, BoxLayout.Y_AXIS ) );
toolsPanel.setBorder( new TitledBorder( null, "Drawing Tools", TitledBorder.DEFAULT_JUSTIFICATION , TitledBorder.CENTER , new Font( "Dialog", Font.BOLD+Font.ITALIC, 13 ), Color.BLACK ) );
//設置mediumPanel2的格局,5行2列,水平和垂直間隔都是5
mediumPanel2.setLayout( new GridLayout( 5, 2, 5, 5 ) );
/**
* 設置各個工具按鈕
*/
// 直線
Icon linebug = new ImageIcon( getClass().getResource("/line.GIF") );
lineButton = new JToggleButton( linebug );
lineButton.setToolTipText( "畫直線" );
lineButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用指定的線寬畫一條直線" );
modelPanel.setVisible( false );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_LINE );
}
}
);
toolsGroup.add( lineButton );
mediumPanel2.add( lineButton );
// 矩形
Icon rectbug = new ImageIcon( getClass().getResource("/rect.GIF"));
rectButton = new JToggleButton( rectbug );
rectButton.setToolTipText( "矩形" );
rectButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用選定的填充模式畫矩形" );
modelPanel.setVisible( true );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_RECT );
drawPanel.setModel(MyPanel.MODEL1);
}
}
);
toolsGroup.add( rectButton );
mediumPanel2.add( rectButton );
// 橢圓
Icon ovalbug = new ImageIcon( getClass().getResource("/acr.GIF"));
ovalButton = new JToggleButton( ovalbug );
ovalButton.setToolTipText( "橢圓" );
ovalButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用選定的填充模式畫橢圓" );
modelPanel.setVisible( true );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_OVAL );
drawPanel.setModel(MyPanel.MODEL1);
}
}
);
toolsGroup.add( ovalButton );
mediumPanel2.add( ovalButton );
//菱形
Icon diamondbug = new ImageIcon( getClass().getResource("/diamond.GIF"));
diamondButton = new JToggleButton( diamondbug );
diamondButton.setToolTipText( "菱形" );
diamondButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用選定的填充模式畫菱形" );
modelPanel.setVisible( true );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_DIAMOND );
drawPanel.setModel(MyPanel.MODEL1);
}
}
);
toolsGroup.add( diamondButton );
mediumPanel2.add( diamondButton );
//圓角矩形
Icon roundrectbug = new ImageIcon( getClass().getResource("/roundrect.GIF"));
roundrectButton = new JToggleButton( roundrectbug );
roundrectButton.setToolTipText( "圓角矩形" );
roundrectButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用選定的填充模式圓角矩形" );
modelPanel.setVisible( true );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_ROUNDRECT );
drawPanel.setModel( MyPanel.MODEL1 );
}
}
);
toolsGroup.add( roundrectButton );
mediumPanel2.add( roundrectButton );
// 鉛筆
pencilButton = new JToggleButton( pencilicon );
pencilButton.setToolTipText( "鉛筆" );
pencilButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
undoItem.setEnabled( true );
redoItem.setEnabled( true );
state.setText( "用一定的象素線寬畫任意形狀的線條" );
modelPanel.setVisible( false );
brushPanel.setVisible( false );
drawPanel.setTool( MyPanel.TOOL_PENCIL );
}
}
);
toolsGroup.add( pencilButton );
mediumPanel2.add( pencilButton );
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -