menu JPopupMenu JTabbedPane
菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中.
菜单组件由菜单栏 (MenuBar)、菜单(Menu)和菜单项(MenuItem)三部分组成。 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成。一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可。
常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方).
一:下拉式菜单的创建步骤:
1.创建一个菜单栏。
2.调用 Frame 的 setMenuBar()方法将菜单栏加入 Frame 中。
3.分别创建若干个 Menu 对象,并加入 MenuBar 中。
4.对于每个 Menu 对象,分别创建若干个 MenuItem 对象,并加入 Menu 中。
实例:
public class MenuDemo {
Frame f;
MenuBar mb;
Menu menuFile;
MenuItem mItemNew, mItemOpen, mItemSave;
MenuDemo() {
f = new Frame("我的菜单实例");
f.setBounds(300, 100, 400, 300);
mb = new MenuBar(); // 创建菜单栏MenuBar
menuFile = new Menu("文件");
mItemNew = new MenuItem("新建");
mItemOpen = new MenuItem("打开");
menuFile.add(mItemNew);
mItemSave = new MenuItem("保存");
menuFile.add(mItemOpen);
// 加入分割线
menuFile.addSeparator();
menuFile.add(mItemSave);
mb.add(menuFile);
// 菜单栏中加入“文件”菜单
// setMenuBar:将此窗体的菜单栏设置为指定的菜单栏。
f.setMenuBar(mb);
f.setVisible(true);
}
public static void main(String[] args) {
new MenuDemo();
}
}
有图有真相:(下拉的菜单项无法截图)
二:弹出式菜单的创建步骤:
1.先建立最基本的JFrame框架.
2.创建右键弹出式菜单(JPopupMenu)和添加的菜单项(JMenuItem). 3.使用add方法和insert方法向JPopupMenu中添加或者插入. 4.通过调用弹出式菜单触发器对应的show方法来显示弹出式菜单,检查所有的MouseEvent事件,看其是否是弹出式菜单触发器,然后在合适的时候显示弹出式菜单
实例:
import javax.swing.*;
public class JPopMenu_Demo extends JFrame {
// 弹出菜单的实现,弹出菜单是一个可弹出并显示一系列选项的小窗口
JPopupMenu popupMenu;
public JPopMenu_Demo() {
super("右键弹出式菜单"); // 调用父类构造函数
// 实例化弹出菜单
popupMenu = new JPopupMenu();
// 增加菜单项到菜单上
popupMenu.add(new JMenuItem("菜单项"));
popupMenu.add(new JButton("按钮"));
popupMenu.add(new JLabel("标签"));
myEvents();
setSize(350, 300); // 设置窗口大小
setLocation(400, 200);
setVisible(true); // 设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
}
private void myEvents() {
// 窗口的鼠标事件处理
addMouseListener(new MouseAdapter() {
// 点击鼠标
public void mousePressed(MouseEvent event) {
// 调用triggerEvent方法处理事件
triggerEvent(event);
}
// 释放鼠标
public void mouseReleased(MouseEvent event) {
triggerEvent(event);
}
private void triggerEvent(MouseEvent event) { // 处理事件
// isPopupTrigger():返回此鼠标事件是否为该平台的弹出菜单触发事件。
if (event.isPopupTrigger())
// 显示菜单
popupMenu.show(event.getComponent(), event.getX(),
event.getY());
}
});
}
public static void main(String args[]) {
new JPopMenu_Demo();
}
}
有图有真相(不过挺丑)
三:选项卡窗体:
1.基本说明:
2.常用方法:
我们把多个JPanel的对象添加到 JTabbedPanel中去 。然后再
JTabbedPanel 添加到窗体,代码如下:
JPanel p1=new JPanel() ;
JPanel p2=new JPanel() ;
JPanel p3=new JPanel() ;
JPanel p4=new JPanel() ; //创建多个容器
jp.add("窗体1", p1) ;
jp.add("窗体2", p2) ;
jp.add("窗体3", p3) ;//添加子容器,并且为选项卡添加名字
this.add(jp,BorderLayout.CENTER); //将选项卡窗体添加到主窗体上去
3.代码示例和截图:
import javax.swing.*;
/**
* <p>Title: 选项卡演示</p>
* <p>Description: 这里是一个选项卡演示,点击不同的卡片,显示的内容不同</p>
*/
public class JTabbedPaneDemo1 extends JPanel {
public JTabbedPaneDemo1() {
super(new GridLayout(1, 1));
ImageIcon icon = createImageIcon("images/MyIcon.gif");
JTabbedPane tabbedPane = new JTabbedPane();
Component panel1 = makeTextPanel("#第一个卡片#");
tabbedPane.addTab("One", icon, panel1, "第一个卡片提示信息!");
tabbedPane.setSelectedIndex(0);
Component panel2 = makeTextPanel("##第二个卡片##");
tabbedPane.addTab("Two", icon, panel2, "第二个卡片提示信息!");
Component panel3 = makeTextPanel("###第三个卡片###");
tabbedPane.addTab("Three", icon, panel3, "第三个卡片提示信息!");
Component panel4 = makeTextPanel("####第四个卡片####");
tabbedPane.addTab("Four", icon, panel4, "第四个卡片提示信息!");
// 将选项卡添加到panl中
add(tabbedPane);
}
/**
* <br>
* 方法说明:添加信息到选项卡中 <br>
* 输入参数:String text 显示的信息内容 <br>
* 返回类型:Component 成员对象
*/
protected Component makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}
/**
* <br>
* 方法说明:获得图片 <br>
* 输入参数:String path 图片的路径 <br>
* 返回类型:ImageIcon 图片对象
*/
protected static ImageIcon createImageIcon(String path) {
// java.net.URL imgURL = TabbedPaneDemo.class.getResource(path);
if (path != null) {
return new ImageIcon(path);
} else {
System.out.println("Couldn't find file: " + path);
return null;
}
}
public static void main(String[] args) {
// 使用Swing窗体描述
// JFrame.setDefaultLookAndFeelDecorated(true);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
// 创建窗体
JFrame frame = new JFrame("TabbedPaneDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JTabbedPaneDemo1(), BorderLayout.CENTER);
// 显示窗体
frame.setSize(400, 200);
frame.setVisible(true);
}
}
运行截图:
menu JPopupMenu JTabbedPane的更多相关文章
- Android Studio —— 创建Menu菜单项
大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:
- [转]NopCommerce How to add a menu item into the administration area from a plugin
本文转自:http://docs.nopcommerce.com/display/nc/How+to+code+my+own+shipping+rate+computation+method Go t ...
- Vertical Menu ver4
以前一直使div来创建Vertical菜单,也曾有过3个版本.http://www.cnblogs.com/insus/archive/2011/10/19/2217314.html 现今Insus. ...
- 菜单(Menu)的三中创建方式——Android开发之路2
菜单的三种创建方式 一.OptionsMenu---选项菜单 Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单.这种菜单叫做选项菜单(Options Menu ...
- jQuery ui autocomplete 与easyUI冲突解决办法(重命名ui的autocomplete 和menu部分)
http://jqueryui.com/download/ UI定制只选autocomplete 会自动把依赖的menu模块也加入进来--然而easyUI也有自己的menu,于是就-- 折腾了好久 ...
- 使用GRUB 添加新的启动项 (menu entry)
GRUB版本: Grub2 基础知识: 相关的文件和目录结构: A./etc/grub.d/ 上图中有一个40_custom的脚本: 可以通过修改40_custom脚本来加入自定义的启动项. B./e ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- WPF menu
MenuMenu的样式很简单,就是顶部的那个框,如下图 而其中的文字“文件”“图形”...是属于MenuItem的,要灵活使用MenuItem,就需要了解MenuItem.Role的作用 TopLev ...
- WPF+通过配置文件生成菜单(Menu)+源码
这个月做项目,遇到过一个通过配置文件来生成菜单的解决方案,感觉挺优雅的,特地放到博客园来,以飨读者. 说来惭愧,以前做的项目都没有这样用过,都是固定死了.如果后续有需要加入菜单,还得在重新修改UI,然 ...
随机推荐
- axios delete 请求
axios delete 请求 在传递一个参数的时候,直接把参数放在请求连接后面,用'/' 连接就可以了 this.axios.post(this.APIURL+'/'+ID) //http://ww ...
- CF747D Winter Is Coming
题目链接: http://codeforces.com/problemset/problem/747/D 题目大意: 接下来的n天内每天都有一个气温,如果某天的温度为负数,则必须使用冬季轮胎:而温度 ...
- linux winqq 不能输入中文的解决办法
wineqq的运行脚本是/usr/share/deepinwine/qqintl/wine-qqintl编辑此脚本,在最开始加入: export XMODIFIERS="@im=fcitx& ...
- spark性能测试理论-Benchmark(转)
一.Benchmark简介Benchmark是一个评价方式,在整个计算机领域有着长期的应用.正如维基百科上的解释“As computer architecture advanced, it becam ...
- Caused by: javax.el.PropertyNotFoundException: Property 'title' not found on type java.lang.String
问题:在JSP页面显示从后台传过来的list集合数据报错. 错误信息: Caused by: javax.el.PropertyNotFoundException: Property 'title' ...
- 求矩阵的n次方 c语言实现
矩阵的n次方,比较容易理解的想法是递归. 思路是这样的,把n分成两部分,当n是偶数的时候,即为左右两边的乘积,如果n是奇数,即为左右两边的乘积再乘a ) matrixn())^*a else matr ...
- ubuntu 14.04 构建openstack使用的ubunt 16 的桌面版的使用镜像
1. 下载ubuntu 16.04桌面版的iso文件,我的个人网盘中有,可以下载 https://pan.baidu.com/s/14qT3lbbqLwDaejmz2VSkyw 2. 安装制作镜像文件 ...
- SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考
今天的文章来自Jerry的同事,曾经的搭档郑晓霞(Zheng Kate).郑晓霞是在Jerry心中是一位很有实力的程序媛,2011年从西安某软件公司跳槽到SAP成都研究院.当时,成都研究院的CRM团队 ...
- 在SAP CRM WebClient UI中用javascript触发ABAP event
环境:SAP CRM WebClient UI 需求:在WebClient UI里不通过用户手动点击,而是使用JavaScript代码自动触发ABAP后台的代码. 解决方案: 1. 定义一个hidde ...
- Android串口通信
前段时间因为工作需要研究了一下android的串口通信,网上有很多讲串口通信的文章,我在做的时候也参考了很多文章,现在就将我学习过程中的一些心得分享给大家,希望可以帮助大家在学习的时候少走一些弯路,有 ...