IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(8) -> 正文阅读

[Java知识库]《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(8)

9.5 菜单

通常对于数据操控方式,除了按钮,选择器,下拉列表的方式,通常还有下来菜单。

9.5.1 菜单创建

为窗体添加菜单:

JMenuBar menuBar = new JMenuBar();

Frame.setJMenuBar(menuBar);

为菜单添加菜单项:

JMenuItem pasteItem = new JMenuItem("Paste");

editMenu.add(pasteItem);

为菜单添加分隔线:

editMenu.addSeparator();

为菜单添加子菜单:

JMenuItem item = editMenu.add("Paste");

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {
    public static  void main(String[] args) {
        Main solution = new Main();

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                MenuFrame frame = new MenuFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class MenuFrame extends JFrame implements ActionListener {
    private JTextField text;

    public MenuFrame(){
        setTitle("BorderTest");
        setSize(450,450);

        JMenuBar bar = new JMenuBar();
        JMenu fileMenu = new JMenu("file");
        JMenuItem copyItem = fileMenu.add("copy");
        JMenuItem pasteItem = fileMenu.add("paste");
        JMenuItem cutItem = fileMenu.add("cut");
        JMenu otherMenu = new JMenu("other");
        JMenuItem nothingItem = otherMenu.add("nothing");
        fileMenu.add(otherMenu);
        bar.add(fileMenu);

        copyItem.addActionListener(this);
        pasteItem.addActionListener(this);
        cutItem.addActionListener(this);
        nothingItem.addActionListener(this);

        setJMenuBar(bar);

        text = new JTextField();
        text.setEditable(false);
        add(text,BorderLayout.NORTH);
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        text.setText(((JMenuItem)e.getSource()).getText());

    }
}

效果:选择对应选项后,文本框会设置为当前选择的值

9.5.2 菜单项中的图标

JMenuItem 加图标:

JMenuItem copyItem = new JMenuItem("copy",new ImageIcon("src/resource/p1.png"));

JMenu 加图标:

JMenu fileMenu = new JMenu(new AbstractAction("file",new ImageIcon("src/resource/p4.png")) {

??????????? @Override

??????????? public void actionPerformed(ActionEvent e) {

??????????? }

??????? });

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {
    public static  void main(String[] args) {
        Main solution = new Main();

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                MenuFrame frame = new MenuFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class MenuFrame extends JFrame implements ActionListener {
    private JTextField text;

    public MenuFrame(){
        setTitle("BorderTest");
        setSize(450,450);

        JMenuBar bar = new JMenuBar();
        JMenu fileMenu = new JMenu(new AbstractAction("file",new ImageIcon("src/resource/p4.png")) {
            @Override
            public void actionPerformed(ActionEvent e) {

            }
        });
//        resource/p1.png
        JMenuItem copyItem = new JMenuItem("copy",new ImageIcon("src/resource/p1.png"));
        JMenuItem pasteItem = new JMenuItem("paste",new ImageIcon("src/resource/p2.png"));
        JMenuItem cutItem = new JMenuItem("cut",new ImageIcon("src/resource/p3.png"));
        JMenu otherMenu = new JMenu(new AbstractAction("other",new ImageIcon("src/resource/p6.png")) {
            @Override
            public void actionPerformed(ActionEvent e) {

            }
        });

        JMenuItem nothingItem = new JMenuItem("nothingItem",new ImageIcon("src/resource/p5.png"));
        otherMenu.add(nothingItem);

        fileMenu.add(copyItem);
        fileMenu.add(pasteItem);
        fileMenu.add(cutItem);
        fileMenu.add(otherMenu);
        bar.add(fileMenu);

        copyItem.addActionListener(this);
        pasteItem.addActionListener(this);
        cutItem.addActionListener(this);
        nothingItem.addActionListener(this);

        setJMenuBar(bar);

        text = new JTextField();
        text.setEditable(false);
        add(text,BorderLayout.NORTH);
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        text.setText(((JMenuItem)e.getSource()).getText());

    }
}

效果:

图片来源:https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.dc64b3430&cid=29753

?相关内容:选择 《Java核心技术 卷1》查找相关笔记

?喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。

关注公众号,互相学习:钰娘娘知识汇总

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-27 10:57:09  更:2022-02-27 10:58:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:26:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码