// *文件名: MenuExample.java
//*【例5.25】菜单的综合应用示例
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuExample extends JFrame
{
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;
public MenuExample(){
setTitle("MenuExample");
setSize(WIDTH, HEIGHT);
Container contentPane = getContentPane();
JPanel textPanel = new JPanel();
// 创建JToolBar菜单
JToolBar bar = new JToolBar();
JButton button1,button2,button3;
button1 = new JButton("pre ");
button2 = new JButton("next ");
button3 = new JButton("end ");
bar.add(button1);
bar.add(button2);
bar.add(button3);
bar.setFloatable(false);
textPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
textPanel.add(bar);
// 创建显示菜单操作的文本区
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);
没有合适的资源?快使用搜索试试~ 我知道了~
java图形用户界面GUI源码.rar
共106个文件
class:53个
java:35个
gif:6个
5星 · 超过95%的资源 需积分: 10 14 下载量 24 浏览量
2009-04-27
07:22:08
上传
评论
收藏 215KB RAR 举报
温馨提示
这是一个关于javaGUI基础的代码源 这是教材源码 包括了介绍java GUI 事件处理 java布局管理器 Swing 组建 AWT组件库
资源推荐
资源详情
资源评论
收起资源包目录
java图形用户界面GUI源码.rar (106个子文件)
java.policy.applet 141B
MenuExample.class 6KB
JTabbedPane2.class 3KB
ThreeListener.class 3KB
ListExample.class 2KB
JTableDemo.class 2KB
CheckBoxFrame.class 2KB
VectorDemo.class 2KB
LoginRun.class 2KB
JSliderDemo.class 2KB
TestMouseEvent.class 2KB
MenuExample$ShowAction.class 2KB
SketchPanel.class 2KB
JButtonDemo.class 2KB
JRadioButtonDemo.class 2KB
JComboBoxDemo.class 2KB
ListExample$courseListener.class 2KB
JScollPaneDemo.class 2KB
JDialogDemo.class 2KB
JFileChooserDemo$chooseFile.class 2KB
JDialogDemo$HelloDialog.class 1KB
TextAreaTest.class 1KB
SketchPanel$KeyHandler.class 1KB
InnerClass.class 1KB
AnonymousClass.class 1KB
TestMouseEvent$TestMouseEvent_TextArea_MouseEvent.class 1KB
TryTest.class 1KB
TestMouseEvent$TestMouseEvent_Button_MouseEvent.class 1KB
ExGui3.class 1KB
JFileChooserDemo.class 1KB
SX5_1.class 1KB
CheckBoxFrame$checkListener.class 1KB
ThrowDemo.class 1KB
ImageIconDemo.class 1KB
AnonymousClass$1.class 1KB
CardLayoutDemo.class 1KB
InnerClass$MyMouseMotionListener.class 1KB
JPanelDemo.class 1KB
SX5_2.class 980B
FrameWithPanel.class 961B
BorderLayoutDemo.class 949B
FlowLayoutDemo.class 931B
MenuExample$2.class 927B
GridLayoutDemo.class 924B
JFrameDemo.class 884B
JFileChooserDemo$Filter.class 877B
JAppletDemo.class 800B
Sketch.class 728B
MenuExample$1.class 724B
MyFrame.class 673B
AnonymousClass$2.class 664B
InnerClass$1.class 640B
ImageIconDemo$1.class 605B
LoginFrame.class 463B
.classpath 226B
Thumbs.db 15KB
china.gif 17KB
f2.gif 16KB
f4.gif 14KB
f1.gif 13KB
f3.gif 10KB
flower.gif 7KB
JButtonDemo1213976060109.html 98B
MenuExample.java 8KB
JTabbedPane2.java 3KB
Sketch.java 3KB
ListExample.java 2KB
TestMouseEvent.java 2KB
JFileChooserDemo.java 2KB
ThreeListener.java 2KB
JDialogDemo.java 2KB
LoginFrame.java 2KB
CheckBoxFrame.java 2KB
JSliderDemo.java 2KB
VectorDemo.java 1KB
TextAreaTest.java 1KB
JButtonDemo.java 1KB
JTableDemo.java 1KB
JRadioButtonDemo.java 1KB
InnerClass.java 1KB
AnonymousClass.java 1KB
JScollPaneDemo.java 1KB
JComboBoxDemo.java 1KB
SX5_1.java 722B
ExGui3.java 684B
FrameWithPanel.java 684B
TryTest.java 665B
GridLayoutDemo.java 651B
ImageIconDemo.java 651B
JPanelDemo.java 630B
JFrameDemo.java 621B
CardLayoutDemo.java 608B
ThrowDemo.java 585B
BorderLayoutDemo.java 545B
MyFrame.java 517B
FlowLayoutDemo.java 517B
JAppletDemo.java 460B
SX5_2.java 413B
shg.jpg 55KB
迅雷.JPG 812B
共 106 条
- 1
- 2
资源评论
- wuxx562012-09-05对初学者有点用
yexiayouren
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功