`

swing 学习笔记七(菜单MenuBar )

阅读更多

/**
* 菜单
*
* @time 10:24:50 AM
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class Test_MentTest extends Frame {
private static final long serialVersionUID = 1L;
// 默认值
int n = 12;
String ko = "TimesRoman";
Color fColor = Color.red;
TextField textField = new TextField("TimeRoman");


/** ************************************************************* */
// 菜单工具条
MenuBar menuBar = new MenuBar();


// 菜单
Menu fontStyle = new Menu("字型"),//
fontSize = new Menu("字号"),//
fontColor = new Menu("颜色");//


// 菜单内容项
CheckboxMenuItem fStyle1 = new CheckboxMenuItem("TimesRoman"),//
fStyle2 = new CheckboxMenuItem("Courier"),//
fStyle3 = new CheckboxMenuItem("Helvetica"),//
fSize1 = new CheckboxMenuItem("10"),//
fSize2 = new CheckboxMenuItem("15"),//
fSize3 = new CheckboxMenuItem("20"),//
fColor1 = new CheckboxMenuItem("红色"),//
fColor2 = new CheckboxMenuItem("绿色"),//
fColor3 = new CheckboxMenuItem("蓝色");//


/** *****鼠标右键弹出菜单************************************************** */
// 弹出式菜单
PopupMenu popupMenu = new PopupMenu();


// 弹出菜单项
MenuItem pp1, pp2, pp3;


/**
* 构造器
*/
private Test_MentTest() {
super("Test_MentTest");


setLayout(new FlowLayout()); // 流布局
setBackground(Color.orange);


// 添加菜单容项
fontStyle.add(fStyle1);
fontStyle.add(fStyle2);
fontStyle.add(fStyle3);
fontSize.add(fSize1);
fontSize.add(fSize2);
fontSize.add(fSize3);
fontColor.add(fColor1);
fontColor.add(fColor2);
fontColor.add(fColor3);


menuBar.add(fontStyle);
menuBar.add(fontSize);
menuBar.add(fontColor);


//
setMenuBar(menuBar);


popupMenu.add(pp1 = new MenuItem("灰色"));
pp1.addActionListener(new koActionListener());
popupMenu.add(pp2 = new MenuItem("青色"));
pp2.addActionListener(new koActionListener());
popupMenu.add(pp3 = new MenuItem("黄色"));
pp3.addActionListener(new koActionListener());


add(textField);
add(popupMenu);
// 设置鼠标事件
enableEvents(AWTEvent.MOUSE_EVENT_MASK);


// 初始化设置
fSize1.setState(true);
fColor1.setState(true);
setSize(200, 180);
setVisible(true);
addWindowListener(new koWindowListener());


// 菜单项添加监听
fStyle1.addItemListener(new koItemListener());
fStyle2.addItemListener(new koItemListener());
fStyle3.addItemListener(new koItemListener());
fSize1.addItemListener(new koItemListener());
fSize2.addItemListener(new koItemListener());
fSize3.addItemListener(new koItemListener());
fColor1.addItemListener(new koItemListener());
fColor2.addItemListener(new koItemListener());
fColor3.addItemListener(new koItemListener());
}


/**
* 应用入口
*
* @param args
*/
public static void main(String[] args) {
new Test_MentTest();
}


/**
* 自定义弹出菜单的单击监听
*/
class koActionListener implements ActionListener {


public void actionPerformed(ActionEvent e) {
if (e.getSource() == pp1) {
textField.setBackground(Color.gray);
} else if (e.getSource() == pp2) {
textField.setBackground(Color.cyan);
} else if (e.getSource() == pp3) {
textField.setBackground(Color.yellow);
}
}
}


/**
* 自定义菜单选项监听
*/
class koItemListener implements ItemListener {


public void itemStateChanged(ItemEvent e) {
if (e.getItemSelectable() == fStyle1) {
ko = fStyle1.getLabel();
fStyle2.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle2) {
ko = fStyle2.getLabel();
fStyle1.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle3) {
ko = fStyle3.getLabel();
fStyle1.setState(false);
fStyle2.setState(false);
}


if (e.getItemSelectable() == fSize1) {
n = Integer.parseInt(fSize1.getLabel());
fSize2.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize2) {
n = Integer.parseInt(fSize2.getLabel());
fSize1.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize3) {
n = Integer.parseInt(fSize3.getLabel());
fSize1.setState(false);
fSize2.setState(false);
}


if (e.getItemSelectable() == fColor1) {
fColor = Color.red;
fColor2.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor2) {
fColor = Color.green;
fColor1.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor3) {
fColor = Color.blue;
fColor1.setState(false);
fColor2.setState(false);
}
textField.setFont(new Font(ko, Font.PLAIN, n));
textField.setForeground(fColor);
textField.setText(ko);
}


}


/**
* 鼠标响应事件
*/
@Override
protected void processMouseEvent(MouseEvent e) {
// 是否为此平台的鼠标弹出事件
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}


}


/**
* 自定义关闭窗体监听
*/
class koWindowListener extends WindowAdapter {


@Override
public void windowClosing(WindowEvent e) {
// 释放资源
e.getWindow().dispose();
System.exit(0);
}
}

分享到:
评论

相关推荐

    JAVA SWING可折叠菜单

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件用于构建桌面应用程序。在Swing中,可折叠菜单...通过不断实践和学习,开发者可以熟练掌握这些技术,创造出更具吸引力和实用性的Java Swing应用。

    Java swing 知识总结学习笔记

    ### Java Swing 知识总结学习笔记 #### 一、Swing 概述 Swing 是一个用于构建桌面应用程序的 Java 图形用户界面 (GUI) 工具包,它基于 Java Abstract Window Toolkit (AWT) 构建而成。Swing 提供了更丰富的组件集...

    JavaFX+Jfoenix 学习笔记(四)--MenuBar菜单栏源码

    在"JavaFX+Jfoenix 学习笔记(四)--MenuBar菜单栏源码"这篇笔记中,我们将深入探讨如何使用JavaFX的`MenuBar`和JFoenix库来创建具有Material Design风格的菜单栏。以下是一些关键知识点: 1. **JavaFX的MenuBar...

    Swing读书笔记

    ### Swing读书笔记:深入理解Swing的包与版面结构 #### Swing的常用包解析 Swing作为Java中用于创建图形用户界面(GUI)的主要库,提供了丰富的组件和功能,其核心包及其作用如下: 1. **`javax.swing`**: - 这是...

    java swing 菜单按钮

    在Swing中,菜单按钮是创建交互式用户界面的关键元素,尤其是对于那些需要多个操作选项的应用程序。本教程将深入讲解Java Swing中的菜单按钮及其使用方法,非常适合初学者。 一、JMenuBar与JMenu 在Swing中,菜单...

    Java Swing模仿记事本菜单栏

    在这个特定的项目中,"Java Swing模仿记事本菜单栏"是指使用Swing组件来创建一个类似记事本的程序,其中包含了一个功能完备的菜单栏。这个菜单栏通常会包含如“文件”、“编辑”、“查看”等选项,提供诸如打开、...

    flex动态菜单(Menubar)

    你可以解压后运行此项目,查看和学习动态菜单的实现方式。 总结,通过使用Flex的Menubar组件结合XML配置,我们可以轻松实现动态菜单。在itemClick事件中处理次级子菜单,可以实现灵活的交互逻辑,为用户提供更个性...

    Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

    下拉式菜单在Java Swing中通常与菜单栏(MenuBar)一起使用。创建下拉式菜单的基本步骤如下: 1. 创建菜单栏对象(MenuBar)。这通常是应用程序窗口的第一个元素。 2. 将菜单栏设置到Frame上,通过调用`setMenuBar...

    Python tkinter 9 Menubar 菜单 (GUI 窗口 教学教程tutorial)

    Python_tkinter_9_Menubar_菜单_(GUI_窗口_教学教程tutorial)

    黑莓学习笔记之三--对话框和菜单栏

    本文将深入探讨“黑莓学习笔记之三——对话框和菜单栏”这一主题,主要关注这两个UI元素在黑莓应用开发中的实现和使用。对于黑莓开发者而言,理解和掌握对话框和菜单栏的使用能够极大地提升应用的用户体验。 对话框...

    Java Swing 中文Api

    Swing API包含了许多组件,如按钮(Button)、文本框(TextField)、标签(Label)、面板(Panel)、滚动窗格(JScrollPane)、菜单(MenuBar)等,这些组件使得开发者能够构建复杂的用户界面。其中,JFrame是顶级容器,用于承载...

    MenuBar(VC++ 工具栏菜单)

    本篇文章将深入探讨VC++中的工具栏菜单实现,以及如何利用提供的`MenuBar`示例进行学习。 **一、工具栏(ToolBar)** 1. **创建工具栏**:在资源视图中,选择"添加资源",然后选择"工具栏",可以创建一个新的工具...

    menubar

    标题中的"menubar"指的是应用程序中的菜单栏,通常位于窗口的顶部,用于提供各种操作选项。在编程领域,创建和管理菜单栏是构建图形用户界面(GUI)的重要部分。接下来,我们将深入探讨菜单栏的概念、功能以及如何在...

    matlab开发-MenuBar

    通过`menubar.m`文件,我们可以学习到如何使用MATLAB的图形用户界面工具箱来设计和实现交互式的菜单系统。`test.fig`和`test.m`文件展示了GUI的布局和功能实现,而`license.txt`则提供了关于代码使用的法律指导。在...

    QML自定义菜单样式

    本篇文章将深入探讨如何在QML中自定义菜单样式,特别是MenuItem和MenuBar。 首先,`MenuItem`是QML中的一个基本组件,通常在`Menu`或`MenuBar`中使用,用于表示可点击的选项。默认情况下,`MenuItem`具有简洁的样式...

    menuBar.7z菜单栏

    在IT行业中,"menuBar.7z菜单栏"这个标题暗示了我们正在处理一个与图形用户界面(GUI)设计相关的项目,特别是涉及到菜单栏的实现。这个项目可能使用了QT库,因为"QT"是提供的标签之一。QT是一个广泛使用的跨平台...

    为系统菜单添加菜单项

    在跨平台的开发环境中,如Java的Swing或JavaFX,添加菜单项同样简单。以下是在JavaFX中添加“关于”菜单项的示例: ```java MenuBar menuBar = new MenuBar(); Menu fileMenu = new Menu("文件"); MenuItem ...

    Java-Swing-menu:在Java中使用JFrame创建Swing菜单示例

    通过学习这个示例,开发者可以了解如何使用Swing创建复杂的菜单系统,包括子菜单、快捷键、分割线等。这有助于提升Java桌面应用的用户体验,使其更符合用户的操作习惯。在实际开发中,可以根据需求扩展这些基本概念...

    菜单程序设计 JAVA语言

    `javax.swing.JMenuBar` 是用来创建菜单栏的类,而`javax.swing.JMenuItem` 则用于创建菜单项。菜单项可以包含子菜单,通过`javax.swing.JMenu` 类实现。此外,我们还可以使用`javax.swing.JPopupMenu` 创建弹出式...

Global site tag (gtag.js) - Google Analytics