ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java.awt.swing菜单组件

2021-07-06 08:56:25  阅读:221  来源: 互联网

标签:JFrame java awt JTable 菜单 swing new public JMenu


在应用系统开发中,菜单组件是经常使用的组件,菜单组件包括下拉式菜单和弹出式菜单。下拉式菜单包含若干个菜单项,每个菜单项在用户单击时引发一个动作,菜单可以看做一组层次化管理的命令集合。弹出式菜单也称为快捷菜单,它是相当于某个指定组件的,当该组件受到鼠标单击时,会弹出一个菜单,这个菜单就是弹出式菜单。弹出式菜单的结构比较简单,最多只有二级菜单。

12.3.1 JMenu

在Java中实现下拉式菜单,可以使用JMenu菜单组件。JMenuBar组件是用来摆放JMenu的菜单栏组件,当创建很多JMenu组件后,需要通过JMenuBar组件将JMenu组件加入到窗体中。接下来先了解一下JMenu类的常用方法,如表12.14所示。

  • JMenu类的常用方法

常用方法

功能描述

public JMenu()

构造没有文本的新 JMenu

public JMenu(String s)

构造一个新 JMenu,用提供的字符串作为其文本

public JMenu(String s, boolean b)

构造一个新 JMenu,用提供的字符串作为其文本并指定其是否为分离式 (tear-off) 菜单

JMenuItem add(JMenuItem item)

将某个菜单项追加到此菜单的末尾。

void addSeparator()

将新分隔符追加到菜单的末尾。

void remove(int pos)

从此菜单移除指定索引处的菜单项。

void remove(JMenuItem item)

从此菜单移除指定的菜单项。

void removeAll()

从此菜单移除所有菜单项。

insert(JMenuItem mi,int pos)

在给定位置插入指定的 JMenuitem

setSelected(boolean b)

设置菜单的选择状态

表12.14中列举了JMenu类的常用方法,接下来通过一个案例来演示下拉式菜单的使用,如例12-13所示。

例12-13  Demo1213.java

 1import java.awt.*;
 2import javax.swing.*;
 3import java.awt.event.ActionEvent;
 4import java.awt.event.KeyEvent;
 5
 6public class Demo1213 {
 7    public static void main(String[] args) {
 8        final JFrame jFrame = new JFrame("JFrame窗口");
 9        JMenuBar jMenuBar = new JMenuBar();		// 创建菜单栏
 10        jFrame.setJMenuBar(jMenuBar);
 11        // 创建菜单
 12        JMenu jMenu = new JMenu("文件(F)");
 13        jMenuBar.add(jMenu);
 14        jMenu.setMnemonic(KeyEvent.VK_F);    //设置快速访问符
 15        JMenuItem item=new JMenuItem("新建(N)",KeyEvent.VK_N);
 16        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,   ActionEvent.CTRL_MASK));
 17        jMenu.add(item);
 18        item=new JMenuItem("打开(O)",KeyEvent.VK_O);
 19        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));
 20        jMenu.add(item);
 21        item=new JMenuItem("保存(S)",KeyEvent.VK_S);
 22        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));
 23        jMenu.add(item);
 24        jMenu.addSeparator();
 25        item=new JMenuItem("退出(E)",KeyEvent.VK_E);
 26        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,ActionEvent.CTRL_MASK));
 27        jMenu.add(item);
 28
 29        jMenu.addSeparator();								// 添加分隔符
 30        jFrame.setLayout(new FlowLayout()); 				// 设置布局
 31        jFrame.setSize(300, 150);
 32        // 设置窗体关闭方式
 33        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 34        jFrame.setVisible(true);
 35
 36    }
 37}

程序的运行结果如图12.15所示。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

  • 例12-13运行结果

图12.15中,运行程序先创建了JFrame窗体,然后创建菜单栏、菜单、菜单项,调用setJMenuBar(JMenuBar menuBar)方法将菜单栏添加进窗体,在“退出”菜单项中添加事件监听,点击“退出”窗体立即关闭。

提示:快速访问符是一种快捷键,通常在按下 Alt 键和某个字母时激活。例如,常用的 Alt+F 是“文件” 菜单的快速访问符。

12.3.1 JPopMenu

弹出式菜单,如果要在Java中实现此菜单,可以使用JPopupMenu菜单组件,先来了解一下它的常用方法,如表12.15所示。

  • JPopupMenu类的常用方法

构造方法

功能描述

public JPopupMenu()

构造一个不带“调用者”的 JPopupMenu。

public JPopupMenu(String label)

构造一个具有指定标题的 JPopupMenu。

public JMenuItem add(JMenuItem item)

将菜单项添加到弹出式菜单的末尾,设置弹出式菜单的可见性

表12.15中列出了JPopupMenu类的构造方法,它的常用方法和JMenu类似,这里就不再赘述,读者可以参考JDK的使用文档,接下来通过一个案例来演示弹出式菜单的使用,如例12-14所示。

例12-14  Demo1214.java

 1import java.awt.*;
 2import java.awt.event.*;
 3import javax.swing.*;
 4public class TestJPopupMenu {
 5	public static void main(String[] args) {
 6		final JFrame jf = new JFrame("JFrame窗口"); 	// 创建JFrame窗体
 7		final JPopupMenu jpm = new JPopupMenu();		// 创建菜单
 8		// 创建两个菜单项
 9		JMenuItem item1 = new JMenuItem("保存");
 10		JMenuItem item2 = new JMenuItem("退出");
 11		// 为第二个菜单项添加事件监听
 12		item2.addActionListener(new ActionListener() {
 13			public void actionPerformed(ActionEvent e) {
 14				jf.dispose();
 15			}
 16		});
 17		jpm.add(item1);									// 将菜单项添加到菜单
 18		jpm.add(item2);
 19		// 为JFrame添加鼠标点击事件监听器
 20		jf.addMouseListener(new MouseAdapter() {
 21			public void mouseClicked(MouseEvent e) {
 22				if (e.getButton() == e.BUTTON3) {
 23					jpm.show(e.getComponent(), e.getX(), e.getY());
 24				}
 25			}
 26		});
 27		jf.setLayout(new FlowLayout()); 				// 设置布局
 28		jf.setSize(200, 150);
 29		// 设置窗体关闭方式
 30		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 31		jf.setVisible(true);
 32	}
 33}

程序的运行结果如图12.16所示。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

  • 例12-14运行结果

图12.16中,运行程序弹出JFrame窗口,在窗口中点击右键,会弹出菜单栏,点击退出,窗口成功关闭。例12-14中,先创建了JFrame窗体,然后创建菜单、菜单项,在“退出”的菜单项中添加事件监听,点击“退出”窗体就会关闭,最后为JFrame窗体添加鼠标点击事件监听器,实现右键弹出菜单的效果。

12.3.1 JTable

表格也是Swing GUI编程中常用的组件,表格是一个由行、列组成的二维显示区域,Swing的JTable提供了对表格的支持,通过使用JTable创建表格是非常容易的,它的构造方法如表12.16所示。

  • JTable类的构造方法

构造方法

功能描述

public JTable()

构造一个默认的JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。

public JTable(int numRows, int c)

使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable。

public (Object[][] rowData, Object[] obj)

构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。

public (TableModel dm)

构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

public JTable(TableModel dm, TableColumnModel cm)

构造一个 JTable,使用数据模型 dm、列模型 cm 和默认的选择模型对其进行初始化。

表12.16列举了JTable类的构造方法,它在创建的时候,可以把一个二维数据包装成一个表格,这个二维数据既可以是一个二维数组,也可以是集合元素为Vector的Vector对象,为了给表格每列设置列标题,还需要传入一个一维数据作为列标题,接下来通过一个案例来演示JTable类的使用,如例12-15所示。

例12-15  Demo1215.java

 1import javax.swing.*;
 2public class Demo1215{
 3	public static void main(String[] args) {
 4	   JFrame jFrame = new JFrame("JFrame窗口"); 		// 创建JFrame窗体
 5        String[] arr = { "序号", "城市", "景点" };	   // 定义标题
 6        // 定义表格数据
 7        Object[][] data = { new Object[] { 1, "焦作市", "红旗渠" },
 8        new Object[] { 2, "林州市", "云台山" },
 9        new Object[] { 3, "驻马店市", "嵖岈山" } };
 10        // 创建JTable
 11        JTable table = new JTable(data, arr);
 12        jFrame.add(new JScrollPane(table));
 13        jFrame.setSize(300, 160);
 14        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 15        jFrame.setVisible(true);
 16	}
 17}

程序的运行结果如图12.17所示。

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

  • 例12-15运行结果

图12.17中,程序运行先创建了JFrame窗体,然后定义了表格标题和数据的两个数组,最后创建JTable时将两个数组以参数传入,利用JTable类成功展现了一个表格。

标签:JFrame,java,awt,JTable,菜单,swing,new,public,JMenu
来源: https://blog.51cto.com/u_2096101/2985363

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有