?? menuexample.java
字號:
//MenuExample.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MenuExample
{
public static void main(String[] args)
{
MenuFrame frame = new MenuFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class MenuFrame extends JFrame
{
public MenuFrame()
{
setTitle("MenuExample");
setSize(WIDTH, HEIGHT);
Container contentPane = getContentPane();
JPanel textPanel=new JPanel();
//創建顯示菜單操作的文本區
myTextField = new JTextField("", 20);
textPanel.add(myTextField);
contentPane.add(textPanel);
//創建菜單欄,并將菜單欄加入到框架中
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
//創建菜單及菜單項,并添加快捷鍵和加速器
//“File”菜單
JMenu fileMenu = new JMenu("File");
//設置菜單的快捷鍵
fileMenu.setMnemonic('F');
//新建“New”菜單項,并添加共用的事件監聽器
newItem = fileMenu.add(new ShowAction("New"));
//設置菜單項的加速器
newItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_N, InputEvent.CTRL_MASK));
//新建“Open”菜單項和監聽器
openItem = fileMenu.add(new ShowAction("Open"));
openItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_O, InputEvent.CTRL_MASK));
//增加分隔線
fileMenu.addSeparator();
//新建“Save”菜單項和監聽器
saveItem = fileMenu.add(new ShowAction("Save"));
saveItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_S, InputEvent.CTRL_MASK));
//初始設置“Save”菜單項為禁用狀態
saveItem.setEnabled(false);
//新建“Close”菜單項和監聽器
closeItem = fileMenu.add(new ShowAction("Close"));
closeItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_L, InputEvent.CTRL_MASK));
closeItem.setEnabled(false);
fileMenu.addSeparator();
//新建“Exit”菜單項和監聽器
JMenuItem exitItem = new JMenuItem("Exit", 'T');
exitItem.addActionListener(new AbstractAction("Exit")
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
exitItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_T, InputEvent.CTRL_MASK));
fileMenu.add(exitItem);
//“Edit”菜單
JMenu editMenu = new JMenu("Edit");
//設置菜單的快捷鍵
editMenu.setMnemonic('E');
//新建“Cut”菜單項和監聽器
cutItem = new JMenuItem("Cut", 'C');
editMenu.add(cutItem);
//添加事件監聽器
cutItem.addActionListener(new ShowAction("Cut"));
cutItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_U, InputEvent.CTRL_MASK));
cutItem.setEnabled(false);
//新建“Copy”菜單項和監聽器
copyItem = new JMenuItem("Copy", 'Y');
copyItem.addActionListener(new ShowAction("Copy"));
copyItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_Y, InputEvent.CTRL_MASK));
copyItem.setEnabled(false);
//新建“Paste”菜單項和監聽器
pasteItem = new JMenuItem("Paste", 'P');
pasteItem.addActionListener(new ShowAction("Paste"));
pasteItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_P, InputEvent.CTRL_MASK));
pasteItem.setEnabled(false);
editMenu.add(copyItem);
editMenu.add(pasteItem);
//“Search”菜單
JMenu searchMenu = new JMenu("Search");
searchMenu.setMnemonic('S');
//創建單選按鈕菜單項“Forward”和“Backward”
ButtonGroup group = new ButtonGroup();
forwardItem = new JRadioButtonMenuItem("Forward");
forwardItem.addActionListener(new ShowAction("Forward"));
forwardItem.setSelected(true);
forwardItem.setEnabled(false);
backwardItem = new JRadioButtonMenuItem("Backward");
backwardItem.addActionListener(new ShowAction("Backward"));
backwardItem.setEnabled(false);
group.add(forwardItem);
group.add(backwardItem);
searchMenu.add(forwardItem);
searchMenu.add(backwardItem);
//"View"菜單
JMenu viewMenu = new JMenu("View");
viewMenu.setMnemonic('V');
//創建子菜單
JMenu optionMenu = new JMenu("Option");
optionMenu.setMnemonic('O');
//創建復選框菜單項“ToolBar”和“Status”
JCheckBoxMenuItem toolItem = new JCheckBoxMenuItem("ToolBar");
JCheckBoxMenuItem statusItem = new JCheckBoxMenuItem("Status");
toolItem.addActionListener(new ShowAction("ToolBar"));
statusItem.addActionListener(new ShowAction("Status"));
//將菜單項添加到子菜單中
optionMenu.add(toolItem);
optionMenu.add(statusItem);
//將子菜單添加到“View”菜單中
viewMenu.add(optionMenu);
//將菜單加入到菜單欄中
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(searchMenu);
menuBar.add(viewMenu);
//彈出式菜單
popup = new JPopupMenu();
//新建彈出式菜單中的“Cut”菜單項和監聽器
cutItemPop = new JMenuItem("Cut", 'C');
cutItemPop.addActionListener(new ShowAction("CutPop"));
cutItemPop.setEnabled(false);
//新建彈出式菜單中的“Copy”菜單項和監聽器
copyItemPop = new JMenuItem("Copy", 'Y');
copyItemPop.addActionListener(new ShowAction("CopyPop"));
copyItemPop.setEnabled(false);
//新建彈出式菜單中的“Paste”菜單項和監聽器
pasteItemPop = new JMenuItem("Paste", 'P');
pasteItemPop.addActionListener(new ShowAction("PastePop"));
pasteItemPop.setEnabled(false);
popup.add(cutItemPop);
popup.add(copyItemPop);
popup.add(pasteItemPop);
//實現彈出式菜單的彈出觸發器
getContentPane().addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent event)
{
if (event.isPopupTrigger())
//指定彈出式菜單的父組件以及顯示位置
popup.show(event.getComponent(),
event.getX(), event.getY());
}
});
}
//菜單項的共用事件監聽器
private class ShowAction extends AbstractAction
{
public ShowAction(String name) { super(name); }
public void actionPerformed(ActionEvent event)
{
//實現菜單項的啟用和禁用控制
if (event.getSource() == newItem ||
event.getSource() == openItem)
{
saveItem.setEnabled(true);
closeItem.setEnabled(true);
cutItem.setEnabled(true);
copyItem.setEnabled(true);
pasteItem.setEnabled(true);
forwardItem.setEnabled(true);
backwardItem.setEnabled(true);
cutItemPop.setEnabled(true);
copyItemPop.setEnabled(true);
pasteItemPop.setEnabled(true);
}
if (event.getSource() == closeItem)
{
saveItem.setEnabled(false);
closeItem.setEnabled(false);
cutItem.setEnabled(false);
copyItem.setEnabled(false);
pasteItem.setEnabled(false);
forwardItem.setEnabled(false);
backwardItem.setEnabled(false);
cutItemPop.setEnabled(false);
copyItemPop.setEnabled(false);
pasteItemPop.setEnabled(false);
}
//在文本域中顯示菜單選擇結果
myTextField.setText(getValue(Action.NAME)+ " selected.");
}
}
public static final int WIDTH = 250;
public static final int HEIGHT = 200;
private JMenuItem newItem;
private JMenuItem openItem;
private JMenuItem closeItem;
private JMenuItem saveItem;
private JMenuItem cutItem;
private JMenuItem copyItem;
private JMenuItem pasteItem;
private JMenuItem cutItemPop;
private JMenuItem copyItemPop;
private JMenuItem pasteItemPop;
private JRadioButtonMenuItem forwardItem;
private JRadioButtonMenuItem backwardItem;
private JPopupMenu popup;
private JTextField myTextField;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -