java动作处理_Java基础之处理事件——使用动作Action(Sketcher 6 using Action objects)...

1 //Frame for the Sketcher application

2 import javax.swing.*;3 import java.awt.event.*;4 import java.awt.*;5

6 import static java.awt.event.InputEvent.*;7 import static java.awt.AWTEvent.*;8 import static java.awt.Color.*;9 import static Constants.SketcherConstants.*;10

11 @SuppressWarnings("serial")12 public class SketcherFrame extendsJFrame {13 //Constructor

14 publicSketcherFrame(String title) {15 setTitle(title); //Set the window title

16 setJMenuBar(menuBar); //Add the menu bar to the window

17 setDefaultCloseOperation(EXIT_ON_CLOSE); //Default is exit the application

18

19 createFileMenu(); //Create the File menu

20 createElementMenu(); //Create the element menu

21 createColorMenu(); //Create the element menu

22 }23

24 //Create File menu item actions

25 private voidcreateFileMenuActions() {26 newAction = new FileAction("New", 'N', CTRL_DOWN_MASK);27 openAction = new FileAction("Open", 'O', CTRL_DOWN_MASK);28 closeAction = new FileAction("Close");29 saveAction = new FileAction("Save", 'S', CTRL_DOWN_MASK);30 saveAsAction = new FileAction("Save As...");31 printAction = new FileAction("Print", 'P', CTRL_DOWN_MASK);32 exitAction = new FileAction("Exit", 'X', CTRL_DOWN_MASK);33

34 //Initialize the array

35 FileAction[] actions ={openAction, closeAction, saveAction, saveAsAction, printAction, exitAction};36 fileActions =actions;37 }38

39 //Create the File menu

40 private voidcreateFileMenu() {41 JMenu fileMenu = new JMenu("File"); //Create File menu

42 fileMenu.setMnemonic('F'); //Create shortcut

43 createFileMenuActions(); //Create Actions for File menu item44

45 //Construct the file drop-down menu

46 fileMenu.add(newAction); //New Sketch menu item

47 fileMenu.add(openAction); //Open sketch menu item

48 fileMenu.add(closeAction); //Close sketch menu item

49 fileMenu.addSeparator(); //Add separator

50 fileMenu.add(saveAction); //Save sketch to file

51 fileMenu.add(saveAsAction); //Save As menu item

52 fileMenu.addSeparator(); //Add separator

53 fileMenu.add(printAction); //Print sketch menu item

54 fileMenu.addSeparator(); //Add separator

55 fileMenu.add(exitAction); //Print sketch menu item

56 menuBar.add(fileMenu); //Add the file menu

57 }58

59 //Create Element menu actions

60 private voidcreateElementTypeActions() {61 lineAction = new TypeAction("Line", LINE, 'L', CTRL_DOWN_MASK);62 rectangleAction = new TypeAction("Rectangle", RECTANGLE, 'R', CTRL_DOWN_MASK);63 circleAction = new TypeAction("Circle", CIRCLE,'C', CTRL_DOWN_MASK);64 curveAction = new TypeAction("Curve", CURVE,'U', CTRL_DOWN_MASK);65

66 //Initialize the array

67 TypeAction[] actions ={lineAction, rectangleAction, circleAction, curveAction};68 typeActions =actions;69 }70

71 //Create the Element menu

72 private voidcreateElementMenu() {73 createElementTypeActions();74 elementMenu = new JMenu("Elements"); //Create Elements menu

75 elementMenu.setMnemonic('E'); //Create shortcut

76 createRadioButtonDropDown(elementMenu, typeActions, lineAction);77 menuBar.add(elementMenu); //Add the element menu

78 }79

80 //Create Element menu actions

81 private voidcreateElementColorActions() {82 redAction = new ColorAction("Red", RED, 'R', CTRL_DOWN_MASK|ALT_DOWN_MASK);83 yellowAction = new ColorAction("Yellow", YELLOW, 'Y', CTRL_DOWN_MASK|ALT_DOWN_MASK);84 greenAction = new ColorAction("Green", GREEN, 'G', CTRL_DOWN_MASK|ALT_DOWN_MASK);85 blueAction = new ColorAction("Blue", BLUE, 'B', CTRL_DOWN_MASK|ALT_DOWN_MASK);86

87 //Initialize the array

88 ColorAction[] actions ={redAction, greenAction, blueAction, yellowAction};89 colorActions =actions;90 }91

92 //Create the Color menu

93 private voidcreateColorMenu() {94 createElementColorActions();95 colorMenu = new JMenu("Color"); //Create Elements menu

96 colorMenu.setMnemonic('C'); //Create shortcut

97 createRadioButtonDropDown(colorMenu, colorActions, blueAction);98 menuBar.add(colorMenu); //Add the color menu

99 }100

101 //Menu creation helper

102 private voidcreateRadioButtonDropDown(JMenu menu, Action[] actions, Action selected) {103 ButtonGroup group = newButtonGroup();104 JRadioButtonMenuItem item = null;105 for(Action action : actions) {106 group.add(menu.add(item = newJRadioButtonMenuItem(action)));107 if(action ==selected) {108 item.setSelected(true); //This is default selected

109 }110 }111 }112

113 //Inner class defining Action objects for File menu items

114 class FileAction extendsAbstractAction {115 //Create action with a name

116 FileAction(String name) {117 super(name);118 }119

120 //Create action with a name and accelerator

121 FileAction(String name, char ch, intmodifiers) {122 super(name);123 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(ch, modifiers));124

125 //Now find the character to underline

126 int index =name.toUpperCase().indexOf(ch);127 if(index != -1) {128 putValue(DISPLAYED_MNEMONIC_INDEX_KEY, index);129 }130 }131

132 //Event handler

133 public voidactionPerformed(ActionEvent e) {134 //You will add action code here eventually...

135 }136 }137

138 //Inner class defining Action objects for Element type menu items

139 class TypeAction extendsAbstractAction {140 //Create action with just a name property

141 TypeAction(String name, inttypeID) {142 super(name);143 this.typeID =typeID;144 }145

146 //Create action with a name and an accelerator

147 private TypeAction(String name,int typeID, char ch, intmodifiers) {148 this(name, typeID);149 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(ch, modifiers));150

151 //Now find the character to underline

152 int index =name.toUpperCase().indexOf(ch);153 if(index != -1) {154 putValue(DISPLAYED_MNEMONIC_INDEX_KEY, index);155 }156 }157

158 public voidactionPerformed(ActionEvent e) {159 elementType =typeID;160 }161

162 private inttypeID;163 }164

165 //Handles color menu items

166 class ColorAction extendsAbstractAction {167 //Create an action with a name and a color

168 publicColorAction(String name, Color color) {169 super(name);170 this.color =color;171 }172

173 //Create an action with a name, a color, and an accelerator

174 public ColorAction(String name, Color color, char ch, intmodifiers) {175 this(name, color);176 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(ch, modifiers));177

178 //Now find the character to underline

179 int index =name.toUpperCase().indexOf(ch);180 if(index != -1) {181 putValue(DISPLAYED_MNEMONIC_INDEX_KEY, index);182 }183 }184

185 public voidactionPerformed(ActionEvent e) {186 elementColor =color;187

188 //This is temporary just to show it works...

189 getContentPane().setBackground(color);190 }191

192 privateColor color;193 }194

195 //File actions

196 privateFileAction newAction, openAction, closeAction, saveAction, saveAsAction, printAction, exitAction;197 private FileAction[] fileActions; //File actions as an array198

199 //Element type actions

200 privateTypeAction lineAction, rectangleAction, circleAction, curveAction;201 private TypeAction[] typeActions; //Type actions as an array202

203 //Element color actions

204 privateColorAction redAction, yellowAction,greenAction, blueAction;205 private ColorAction[] colorActions; //Color actions as an array

206

207 private JMenuBar menuBar = new JMenuBar(); //Window menu bar

208 private JMenu elementMenu; //Elements menu

209 private JMenu colorMenu; //Color menu

210 private Color elementColor = DEFAULT_ELEMENT_COLOR; //Current element color

211 private int elementType = DEFAULT_ELEMENT_TYPE; //Current element type

212 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值