<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 303  文章 - 883  trackbacks - 0
    <2007年2月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728123
    45678910

    歡迎光臨! 
    閑聊 QQ:1074961813

    隨筆分類(357)

    我管理的群

    公共blog

    • n維空間
    • Email : java3d@126.com 群 : 12999758

    參與管理的論壇

    好友的blog

    我的其他blog

    朋友的網站

    搜索

    •  

    最新評論

    ?????????
    寫得很有條理啊 呵呵

    ?

    ??1 import ?java.awt. * ;
    ??2 import ?java.awt.event. * ;
    ??3 import ?javax.swing.JPopupMenu;
    ??4 import ?javax.swing.JMenu;
    ??5 import ?javax.swing.JMenuItem;
    ??6 import ?javax.swing.JCheckBoxMenuItem;
    ??7 import ?javax.swing.JRadioButtonMenuItem;
    ??8 import ?javax.swing.ButtonGroup;
    ??9 import ?javax.swing.JMenuBar;
    ?10 import ?javax.swing.KeyStroke;
    ?11 import ?javax.swing.ImageIcon;?
    ?12
    ?13 import ?javax.swing.JPanel;
    ?14 import ?javax.swing.JTextArea;
    ?15 import ?javax.swing.JScrollPane;
    ?16 import ?javax.swing.JFrame;?
    ?17
    ?18 /* ?PopupMenuDemo.java?requires?images/middle.gif.? */ ?
    ?19
    ?20 /*
    ?21 ?*?Like?MenuDemo,?but?with?popup?menus?added.
    ?22 ? */

    ?23 public ? class ?PopupMenuDemo? implements ?ActionListener,?ItemListener? {?????? // 負責對點擊事件的監聽
    ?24 ????JTextArea?output;?????????????????????????????????????????????????????????????????????????????????????? // 負責輸出的變量
    ?25 ????JScrollPane?scrollPane;?????????????????????????????????????????????????????????????????????????????? // 創建畫板
    ?26 ????String?newline? = ? " \n " ;????????????????????????????????????????????????????????????????????????????????? // 每輸出一次,大回車?
    ?27
    ?28 ???? public ?JMenuBar?createMenuBar()? {???????????????????????????????????????????????????????????? // 創建菜單欄JMenuBar?函數
    ?29 ?????????????????????????????????????????????????????????????????????????
    ?30 ?????????????????????????????????????????????????????????????????????????? // 這里要解釋一下,J*?(如:JMenuBar)是swing提供的
    ?31 ?????????????????????????????????????????????????????????????????????????? // 而,?*?(如:MenuBar)是由awt提供的
    ?32 ????????JMenuBar?menuBar;
    ?33 ????????JMenu?menu,?submenu;
    ?34 ????????JMenuItem?menuItem;
    ?35 ????????JRadioButtonMenuItem?rbMenuItem;
    ?36 ????????JCheckBoxMenuItem?cbMenuItem;?
    ?37
    ?38 ???????? // Create?the?menu?bar.???????????????
    ?39 ????????menuBar? = ? new ?JMenuBar();?????????????????????????????????????????????????????????????????? // 創建菜單欄JMenuBar?
    ?40
    ?41 ???????? // Build?the?first?menu.
    ?42 ????????menu? = ? new ?JMenu( " A?Menu " );????????????????????????????????????????????????????????????? // 創建第一個menu
    ?43 ????????menu.setMnemonic(KeyEvent.VK_A);??????????????????????????????????????????????????? // 指定鍵盤助記符的?menu
    ?44 ????????menu.getAccessibleContext().setAccessibleDescription(
    ?45 ???????????????? " The?only?menu?in?this?program?that?has?menu?items " );???????????????????? // 第一個menu內容
    ?46 ????????menuBar.add(menu);?????????????????????????????????????????????????????????????????????????????? // 將menu加入菜單欄?
    ?47
    ?48 ???????? // a?group?of?JMenuItems?????????????????????????????????????????????????????????????????????????? // 下同
    ?49 ????????menuItem? = ? new ?JMenuItem( " A?text-only?menu?item " ,
    ?50 ?????????????????????????????????KeyEvent.VK_T);
    ?51 ???????? // menuItem.setMnemonic(KeyEvent.VK_T);? // used?constructor?instead
    ?52 ????????menuItem.setAccelerator(KeyStroke.getKeyStroke(
    ?53 ????????????????KeyEvent.VK_1,?ActionEvent.ALT_MASK));
    ?54 ????????menuItem.getAccessibleContext().setAccessibleDescription(
    ?55 ???????????????? " This?doesn't?really?do?anything " );
    ?56 ????????menuItem.addActionListener( this );
    ?57 ????????menu.add(menuItem);?
    ?58
    ?59 ????????ImageIcon?icon? = ?createImageIcon( " images/middle.gif " );???????????????????????? // 這里有圖片
    ?60 ????????menuItem? = ? new ?JMenuItem( " Both?text?and?icon " ,?icon);
    ?61 ????????menuItem.setMnemonic(KeyEvent.VK_B);
    ?62 ????????menuItem.addActionListener( this );
    ?63 ????????menu.add(menuItem);?
    ?64
    ?65 ????????menuItem? = ? new ?JMenuItem(icon);
    ?66 ????????menuItem.setMnemonic(KeyEvent.VK_D);
    ?67 ????????menuItem.addActionListener( this );
    ?68 ????????menu.add(menuItem);?
    ?69
    ?70 ???????? // a?group?of?radio?button?menu?items
    ?71 ????????menu.addSeparator();????????????????????????????????????? // 將新分隔符追加到菜單的末尾???????????????????????????????????????????????????????????????????????????????????
    ?72 ????????
    ?73 ????????ButtonGroup?group? = ? new ?ButtonGroup();??????????????????? // 創建Button集?
    ?74
    ?75 ????????rbMenuItem? = ? new ?JRadioButtonMenuItem( " A?radio?button?menu?item " );????? // 加入單選(1)
    ?76 ????????rbMenuItem.setSelected( true );
    ?77 ????????rbMenuItem.setMnemonic(KeyEvent.VK_R);
    ?78 ????????group.add(rbMenuItem);
    ?79 ????????rbMenuItem.addActionListener( this );?? // 設置事件監聽?????????????????????????????????
    ?80 ????????menu.add(rbMenuItem);?
    ?81
    ?82 ????????rbMenuItem? = ? new ?JRadioButtonMenuItem( " Another?one " );?????????????????? // 加入單選(2)
    ?83 ????????rbMenuItem.setMnemonic(KeyEvent.VK_O);
    ?84 ????????group.add(rbMenuItem);
    ?85 ????????rbMenuItem.addActionListener( this );
    ?86 ????????menu.add(rbMenuItem);?
    ?87
    ?88 ???????? // a?group?of?check?box?menu?items
    ?89 ????????menu.addSeparator();?????????????????????????????????????????????????? // 將新分隔符追加到菜單的末尾???
    ?90 ????????cbMenuItem? = ? new ?JCheckBoxMenuItem( " A?check?box?menu?item " );?????????? // 加入復選(1)
    ?91 ????????cbMenuItem.setMnemonic(KeyEvent.VK_C);
    ?92 ????????cbMenuItem.addItemListener( this );
    ?93 ????????menu.add(cbMenuItem);?
    ?94
    ?95 ????????cbMenuItem? = ? new ?JCheckBoxMenuItem( " Another?one " );????????????????????? // 加入復選(2)
    ?96 ????????cbMenuItem.setMnemonic(KeyEvent.VK_H);
    ?97 ????????cbMenuItem.addItemListener( this );
    ?98 ????????menu.add(cbMenuItem);?
    ?99
    100 ???????? // a?submenu???????????????????????????????????????????????????????????? // 創建具有子菜單的超級菜單
    101 ????????menu.addSeparator();?????????????????????????????
    102 ????????submenu? = ? new ?JMenu( " A?submenu " );??????????????????????????????????????? // 父menu?(submenu)
    103 ????????submenu.setMnemonic(KeyEvent.VK_S);?
    104
    105 ????????menuItem? = ? new ?JMenuItem( " An?item?in?the?submenu " );????????????????????? // 子?menu1?(menuItem)??????????
    106 ????????menuItem.setAccelerator(KeyStroke.getKeyStroke(
    107 ????????????????KeyEvent.VK_2,?ActionEvent.ALT_MASK));
    108 ????????menuItem.addActionListener( this );
    109 ????????submenu.add(menuItem);?
    110
    111 ????????menuItem? = ? new ?JMenuItem( " Another?item " );???????????????????????????????? // 子?menu2?(menuItem)
    112 ????????menuItem.addActionListener( this );
    113 ????????submenu.add(menuItem);
    114 ????????menu.add(submenu);?
    115
    116 ???????? // Build?second?menu?in?the?menu?bar.???????????????????????????????????? // 另一個菜單
    117 ????????menu? = ? new ?JMenu( " Another?Menu " );
    118 ????????menu.setMnemonic(KeyEvent.VK_N);
    119 ????????menu.getAccessibleContext().setAccessibleDescription(
    120 ???????????????? " This?menu?does?nothing " );
    121 ????????menuBar.add(menu);?
    122
    123 ???????? return ?menuBar;
    124 ????}
    ?
    125
    126 ???? public ?Container?createContentPane()? {??????????????????????????????????????? // 創建中間畫板
    127 ???????? // Create?the?content-pane-to-be.
    128 ????????JPanel?contentPane? = ? new ?JPanel( new ?BorderLayout());
    129 ????????contentPane.setOpaque( true );?
    130
    131 ???????? // Create?a?scrolled?text?area.
    132 ????????output? = ? new ?JTextArea( 5 ,? 30 );
    133 ????????output.setEditable( false );
    134 ????????scrollPane? = ? new ?JScrollPane(output);?
    135
    136 ???????? // Add?the?text?area?to?the?content?pane.
    137 ????????contentPane.add(scrollPane,?BorderLayout.CENTER);?
    138
    139 ???????? return ?contentPane;
    140 ????}
    ?
    141
    142 ???? public ? void ?createPopupMenu()? {?????????????????????????????????????????????? // 創建右擊菜單,,不懂請看我的另一篇文章?
    143
    144 ????????JMenuItem?menuItem;?
    145
    146 ???????? // Create?the?popup?menu.
    147 ????????JPopupMenu?popup? = ? new ?JPopupMenu();
    148 ????????menuItem? = ? new ?JMenuItem( " A?popup?menu?item " );
    149 ????????menuItem.addActionListener( this );
    150 ????????popup.add(menuItem);
    151 ????????menuItem? = ? new ?JMenuItem( " Another?popup?menu?item " );
    152 ????????menuItem.addActionListener( this );
    153 ????????popup.add(menuItem);?
    154
    155 ???????? // Add?listener?to?the?text?area?so?the?popup?menu?can?come?up.
    156 ????????MouseListener?popupListener? = ? new ?PopupListener(popup);
    157 ????????output.addMouseListener(popupListener);
    158 ????}
    ?
    159
    160 ???? public ? void ?actionPerformed(ActionEvent?e)? {????????????????????????????????????????????? // 創建菜單監聽
    161 ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? // 并做出相應的事件
    162 ????????JMenuItem?source? = ?(JMenuItem)(e.getSource());
    163 ????????String?s? = ? " Action?event?detected. "
    164 ??????????????????? + ?newline
    165 ??????????????????? + ? " ????Event?source:? " ? + ?source.getText()
    166 ??????????????????? + ? " ?(an?instance?of? " ? + ?getClassName(source)? + ? " ) " ;
    167 ????????output.append(s? + ?newline);
    168 ????????output.setCaretPosition(output.getDocument().getLength());
    169 ????}
    ?
    170
    171 ???? public ? void ?itemStateChanged(ItemEvent?e)? {?????????????????????????????????????????????? // 監聽多選框
    172 ????????JMenuItem?source? = ?(JMenuItem)(e.getSource());
    173 ????????String?s? = ? " Item?event?detected. "
    174 ??????????????????? + ?newline
    175 ??????????????????? + ? " ????Event?source:? " ? + ?source.getText()
    176 ??????????????????? + ? " ?(an?instance?of? " ? + ?getClassName(source)? + ? " ) "
    177 ??????????????????? + ?newline
    178 ??????????????????? + ? " ????New?state:? "
    179 ??????????????????? + ?((e.getStateChange()? == ?ItemEvent.SELECTED)? ?
    180 ????????????????????? " selected " : " unselected " );
    181 ????????output.append(s? + ?newline);
    182 ????????output.setCaretPosition(output.getDocument().getLength());
    183 ????}
    ?
    184
    185 ???? // ?Returns?just?the?class?name?--?no?package?info.
    186 ???? protected ?String?getClassName(Object?o)? {????????????????????????????????????????????? // 創建函數,獲取所調用的函數的名稱
    187 ????????String?classString? = ?o.getClass().getName();
    188 ???????? int ?dotIndex? = ?classString.lastIndexOf( " . " );
    189 ???????? return ?classString.substring(dotIndex + 1 );
    190 ????}
    ?
    191
    192 ???? /** ?Returns?an?ImageIcon,?or?null?if?the?path?was?invalid.? */
    193 ???? protected ? static ?ImageIcon?createImageIcon(String?path)? {??????????????????????????? // 調用前面的gif圖片
    194 ????????java.net.URL?imgURL? = ?PopupMenuDemo. class .getResource(path);
    195 ???????? if ?(imgURL? != ? null )? {
    196 ???????????? return ? new ?ImageIcon(imgURL);
    197 ????????}
    ? else ? {
    198 ????????????System.err.println( " Couldn't?find?file:? " ? + ?path);
    199 ???????????? return ? null ;
    200 ????????}

    201 ????}
    ?
    202
    203 ???? /**
    204 ?????*?Create?the?GUI?and?show?it.??For?thread?safety,
    205 ?????*?this?method?should?be?invoked?from?the
    206 ?????*?event-dispatching?thread.
    207 ????? */

    208 ???? private ? static ? void ?createAndShowGUI()? {?????????????????????????? // 創建所須GUI線程(控件),并進行設置
    209 ???????? // Create?and?set?up?the?window.
    210 ????????JFrame?frame? = ? new ?JFrame( " PopupMenuDemo " );
    211 ????????frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);?
    212
    213 ???????? // Create/set?menu?bar?and?content?pane.
    214 ????????PopupMenuDemo?demo? = ? new ?PopupMenuDemo();
    215 ????????frame.setJMenuBar(demo.createMenuBar());
    216 ????????frame.setContentPane(demo.createContentPane());?
    217
    218 ???????? // Create?and?set?up?the?popup?menu.
    219 ????????demo.createPopupMenu();?
    220
    221 ???????? // Display?the?window.
    222 ????????frame.setSize( 450 ,? 260 );
    223 ????????frame.setVisible( true );
    224 ????}
    ?
    225
    226 ???? public ? static ? void ?main(String[]?args)? {?????????????????????????????????? // 主函數
    227 ???????? // Schedule?a?job?for?the?event-dispatching?thread:
    228 ???????? // creating?and?showing?this?application's?GUI.
    229 ????????javax.swing.SwingUtilities.invokeLater( new ?Runnable()? {
    230 ???????????? public ? void ?run()? {
    231 ????????????????createAndShowGUI();
    232 ????????????}

    233 ????????}
    );
    234 ????}
    ?
    235
    236 ???? class ?PopupListener? extends ?MouseAdapter? {????????????????????????????????? // 右擊菜單監聽
    237 ????????JPopupMenu?popup;?
    238
    239 ????????PopupListener(JPopupMenu?popupMenu)? {
    240 ????????????popup? = ?popupMenu;
    241 ????????}
    ?
    242
    243 ???????? public ? void ?mousePressed(MouseEvent?e)? {
    244 ????????????maybeShowPopup(e);
    245 ????????}
    ?
    246
    247 ???????? public ? void ?mouseReleased(MouseEvent?e)? {
    248 ????????????maybeShowPopup(e);
    249 ????????}
    ?
    250
    251 ???????? private ? void ?maybeShowPopup(MouseEvent?e)? {
    252 ???????????? if ?(e.isPopupTrigger())? {
    253 ????????????????popup.show(e.getComponent(),
    254 ???????????????????????????e.getX(),?e.getY());
    255 ????????????}

    256 ????????}

    257 ????}

    258
    259
    260
    261 }
    ?
    262


    地震讓大伙知道:居安思危,才是生存之道。
    posted on 2007-02-25 10:29 小尋 閱讀(438) 評論(2)  編輯  收藏 所屬分類: j2se/j2ee/j2me

    FeedBack:
    # re: 菜單篇之~~老外杰作~~~~~~~~~~~~~~~~~注釋完成 2007-02-25 23:11 yanyan
    代碼最后少了一個}..  回復  更多評論
      
    # re: 菜單篇之~~老外杰作~~~~~~~~~~~~~~~~~注釋完成 2007-03-01 19:53 幻想~@@~
    恩 ,謝謝指正!  回復  更多評論
      
    主站蜘蛛池模板: 亚洲女久久久噜噜噜熟女| 亚洲黄色在线观看视频| 久久午夜无码免费| 亚洲中文字幕无码中文| 亚洲黄片手机免费观看| 久久国产精品2020免费m3u8| 亚洲一日韩欧美中文字幕在线| 国产在线19禁免费观看国产 | 国产精品亚洲玖玖玖在线观看| 四虎国产成人永久精品免费| 国产91在线|亚洲| 亚洲中文字幕无码一区| 99精品全国免费观看视频| 免费无码作爱视频| 亚洲AV无码XXX麻豆艾秋| 亚洲精品福利视频| 哒哒哒免费视频观看在线www| 香港a毛片免费观看| 特黄aa级毛片免费视频播放| 亚洲码一区二区三区| 亚洲欧洲国产成人综合在线观看 | 国产成人A人亚洲精品无码| 永久免费观看的毛片的网站| 午夜网站在线观看免费完整高清观看| 亚洲成a∧人片在线观看无码 | 亚洲啪AV永久无码精品放毛片| 亚洲色偷偷综合亚洲AVYP| 男女啪啪永久免费观看网站| 美女内射无套日韩免费播放| 二级毛片免费观看全程| 中文字幕乱码亚洲无线三区 | 无码国产精品一区二区免费I6| 搡女人免费免费视频观看| 在线观看亚洲网站| 亚洲精品二三区伊人久久| 亚洲人成网www| 亚洲精品无码久久久久sm| 亚洲精品国产高清不卡在线| 最新69国产成人精品免费视频动漫| 亚洲免费闲人蜜桃| 99蜜桃在线观看免费视频网站|