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

菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中.

菜单组件由菜单栏 (MenuBar)、菜单(Menu)和菜单项(MenuItem)三部分组成。 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成。一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可。

常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方).

一:下拉式菜单的创建步骤:

1.创建一个菜单栏。

2.调用 Frame 的 setMenuBar()方法将菜单栏加入 Frame 中。

3.分别创建若干个 Menu 对象,并加入 MenuBar 中。

4.对于每个 Menu 对象,分别创建若干个 MenuItem 对象,并加入 Menu 中。

实例:

import java.awt.*;

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();

}

}

有图有真相:(下拉的菜单项无法截图)

4bcbd1f5ed3b3e32585ce29699d875c8.png

二:弹出式菜单的创建步骤:

1.先建立最基本的JFrame框架.

2.创建右键弹出式菜单(JPopupMenu)和添加的菜单项(JMenuItem). 3.使用add方法和insert方法向JPopupMenu中添加或者插入. 4.通过调用弹出式菜单触发器对应的show方法来显示弹出式菜单,检查所有的MouseEvent事件,看其是否是弹出式菜单触发器,然后在合适的时候显示弹出式菜单

实例:

import java.awt.event.*;

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();

}

}

有图有真相(不过挺丑)

be86a567cf797c7016b73a89ba660e44.png

三:选项卡窗体:

1.基本说明:

2.常用方法:

我们把多个JPanel的对象添加到 JTabbedPanel中去 。然后再

JTabbedPanel 添加到窗体,代码如下:

JTabbedPane jp=new JTabbedPane(JTabbedPane.LEFT) ; //设置选项卡在坐标

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 java.awt.*;

import javax.swing.*;

/**

*

Title: 选项卡演示

*

Description: 这里是一个选项卡演示,点击不同的卡片,显示的内容不同

*/

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);

}

/**

*

* 方法说明:添加信息到选项卡中

* 输入参数:String text 显示的信息内容

* 返回类型: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;

}

/**

*

* 方法说明:获得图片

* 输入参数:String path 图片的路径

* 返回类型: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);

}

}

运行截图:

f004e24329985c56bc17899c5670e8c7.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Java菜单项点击后弹出窗口的功能,可以使用JPopupMenu类和JMenuItem类。 首先创建一个JPopupMenu对象,然后将它添加到需要弹出菜单组件上,比如一个JButton或JPanel对象。 然后创建一个JMenuItem对象,并将它添加到JPopupMenu对象上。为JMenuItem对象添加一个ActionListener监听器,当用户点击菜单项时,弹出一个新的窗口。 下面是一个示例代码: ``` import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MenuExample extends JFrame { private JPopupMenu popupMenu; public MenuExample() { // 创建一个JPanel对象,作为菜单弹出组件 JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(200, 200)); // 创建一个JButton对象,并将popupMenu添加到它上面 JButton button = new JButton("弹出菜单"); popupMenu = new JPopupMenu(); button.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { popupMenu.show(e.getComponent(), e.getX(), e.getY()); } } }); // 创建一个JMenuItem对象,并将它添加到popupMenu上 JMenuItem menuItem = new JMenuItem("打开窗口"); popupMenu.add(menuItem); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 弹出一个新的窗口 JFrame frame = new JFrame("新窗口"); frame.setPreferredSize(new Dimension(200, 200)); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack(); frame.setVisible(true); } }); // 将button和panel添加到窗口上 add(button, BorderLayout.NORTH); add(panel, BorderLayout.CENTER); pack(); setVisible(true); } public static void main(String[] args) { new MenuExample(); } } ``` 运行这个示例程序,当用户点击“打开窗口”菜单项时,就会弹出一个新的窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值