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