`
helpbs
  • 浏览: 1163814 次
文章分类
社区版块
存档分类
最新评论

Swing菜单与工具栏(五)

 
阅读更多

6.2 使用弹出菜单:Popup类

并不是我们希望弹出的所有内容都需要是一个菜单。通过Popup与PopupFactory类,我们可以在其他的组件上弹出任何组件。这与工具提示不同,工具提示是只读的不可选择的标签。我们可以弹出可选择的按钮,树或是表。

6.2.1 创建弹出组件

Popup是一个具有两个方法hide()与show()的简单类,同时具有两个受保护的构造函数。我们并不能直接创建Popup对象,而是需要由PopupFactory类获取。

PopupFactory factory = PopupFactory.getSharedInstance();
Popup popup = factory.getPopup(owner, contents, x, y);

由PopupFactory所创建的带有contents组件的Popup则会位于owner组件内的其他组件之上。

6.2.2 一个完整的Popup/PopupFactory使用示例

列表6-7演示了在另一个JButton之上显示了一个JButton的Popup与PopupFactory的使用示例。选择初始的JButton会使得在第一个JButton之上,在随机位置创建第二个。当第二个按钮可见时,每一个都是可选择的。多次选择初始的可见按钮会出现多个弹出按钮,如图6-9所示。每一个弹出菜单将会在三秒后消失。在这个例子中,选择弹出菜单只会在控制台显示一条消息。

swing_6_9

package net.ariel.ch06;
 
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Popup;
import javax.swing.PopupFactory;
import javax.swing.Timer;
 
public class ButtonPopupSample {
 
	static final Random random = new Random();
 
	// define ActionListener
	static class ButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent event) {
			System.out.println("Selected: "+event.getActionCommand());
		}
	};
 
	// define show popu ActionListener
	static class ShowPopupActionListener implements ActionListener {
		private Component component;
		ShowPopupActionListener(Component component) {
			this.component = component;
		}
		public synchronized void actionPerformed(ActionEvent event) {
			JButton button = new JButton("Hello, world");
			ActionListener listener = new ButtonActionListener();
			button.addActionListener(listener);
			PopupFactory factory = PopupFactory.getSharedInstance();
			int x = random.nextInt(200);
			int y = random.nextInt(200);
			final Popup popup = factory.getPopup(component, button, x, y);
			popup.show();
			ActionListener hider = new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					popup.hide();
				}
			};
			// hide popup in 3 seconds
			Timer timer = new Timer(3000, hider);
			timer.start();
		}
	};
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Runnable runner = new Runnable() {
			public void run() {
				// create frame
				JFrame frame = new JFrame("Button Popup Sample");
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
				ActionListener actionListener =  new ShowPopupActionListener(frame);
 
				JButton start = new JButton("Pick Me for Popup");
				start.addActionListener(actionListener);
				frame.add(start);
 
				frame.setSize(350, 250);
				frame.setVisible(true);
			}
		};
		EventQueue.invokeLater(runner);
	}
 
}
分享到:
评论

相关推荐

    使用java的AWT或者swing来做任务栏菜单

    博文链接:https://clarancepeng.iteye.com/blog/197429

    记事本(java)

    该记事本主要功能:主...格式菜单:包括自动换行、字体、颜色三个菜单项,主要实现了文档内容自动换行,调用Swing组件自带的颜色对话框,以及调用新创建的字体对话框;弹出式菜单:实现对文档的复制、剪切、粘贴功能。

    Swing组件下载(常用组件)

    工具栏:JToolBar 桌面窗格:JDesktopPane 内部框架:JInternalFrame 分层窗格:JLayeredPane 标签:JLabel 按钮:JButton 开启/关闭按钮:JToggleButton 复选框:JCheckBox 单选按钮:JRadioButton 按钮组:...

    第7章 工具栏、菜单及其它组件的设计.ppt

    工具栏和菜单是几乎所有的GUI程序都需要设计的界面元素,它们为应用程序提供了快速执行特定方法和程序逻辑的用户接口。...本章介绍工具栏和菜单的设计,伸缩面板、数值组件、浏览器和系统托盘等控件的设计与使用。

    基于JavaSwing文本编辑器

    利用Java Swing提供的各种组件开发出一款具有一定实用功能的文本编辑器。该编辑器能完成的主要功能:菜单栏、工具栏、快显菜单以及文件、编辑、视图等菜单内的常用子项目。学习和掌握Java Swing的相关知识

    简易文本编辑器........

    简易文本编辑器111111111111111111111111

    com_ssepan_mvcform:Java Swing GUI应用程序,带有一些标准菜单项,工具栏项和状态栏。 使用动作事件来实现它们(进行中的工作)(连接属性已更改并控制已更改的事件)

    com_ssepan_mvcform:Java Swing GUI应用程序,带有一些标准菜单项,工具栏项和状态栏。 使用动作事件来实现它们(进行中的工作)(连接属性已更改并控制已更改的事件)

    java Swing的使用.docx

    Swing还提供了许多其他的GUI组件和功能,如文本框、标签、列表、菜单、工具栏、进度条、表格等。开发人员可以使用这些组件和功能来构建复杂的GUI应用程序。此外,Swing还提供了许多皮肤和主题,可以用于美化应用程序...

    基于设计模式的Java swing交互式界面模式的应用研究与实现

    随着计算机与软件的进步,人机交互...如编辑框,滚动条,弹出菜单等的做法,由此形成了一个开发swing风格界面的 集成界面模板工具。最后,文章结尾总结了提出和研究设计的这套方案在意义和不足,以及进一步的工作。

    java版记事本源码 Java记事本 记事本java程序 java swing 记事本

    纯Java编写的记事本 包含源码 实现了许多功能例如:定时保存、日历、字数统计,工具栏等一些功能。特别适合初学swing的人员阅读。

    图书馆管理系统(Swing)

    主窗体工具栏设计 8、图书信息管理模块 图书信息添加界面设计 检测书籍编号是否已存在 保存图书信息 图书信息修改界面设计 在图书修改表单中显示图书信息 修改图书信息 9、开发技巧和难点分析 多窗体...

    swing界面设计之JTree

    要工具栏还是不要工具栏? 125 设置字体 126 使用展示窗口 127 <object> 标签 128 四种 activator 129 添加内容敏感的帮助 130 窗口级帮助 131 字段级帮助 131 屏幕级帮助 133 添加嵌入帮助 135 添加搜索功能 136 ...

    java swing综合程序

    一步一步地实现菜单栏(JMenuBar)工具栏(JPopupMenu)组合框(JComboBox)复选框(JCheckBox)单选按钮(JRadioButton)文本域的综合应用(三) 源程序

    Java学习指南(Swing入门篇)

    对话框,及自定义对话框- 菜单和工具栏- 自定义绘图- JList 列表框的用法,以及单元格的自定义显示- JTable 表格的用法,以及单元格的自定义显示- 一个基于 JTable 和 JSON 的学生管理系统- Java Swing应用程序的...

    JIDE Action Framework(动作框架)开发员技术手册

    杰笛动作框架就提供一个比Swing自带的更好的工具栏和菜单栏。它提供了一个叫命令栏(CommandBar)的组件,可以取代Swing自带的JToolBar和JMenuBar。 杰笛动作框架有各种各样的风格。在当前的版本里,我们提供了...

    跟我学Java面向对象程序设计技术及应用——Java-Swing-GUI组件技术教学参考示例(第2部分).pdf

    若我们能将一般常用的功能以工具栏方式呈现在菜单下,让用户很快得到他想要 的功能,不仅增加用户使用软件的意愿,也加速工作的运行效率.这就是使用 ToolBar 的好处。 (2)用户可以拖拽出一个独立的可显示工具控件的...

    OpenSwing开发包及源码

    只能输入0~255数字的IP地址 JListChooser 列表选择对话框 JNumberField 数字输入框,可限制小数位数,数字最大长度,最大最小能输入的数字 JPopupButton 带下拉菜单的工具栏按钮 JStatusBar 模拟Windows的...

    《Java开发宝典[精品]》陈丹丹 李银龙.epub

    主要包括如何学好编程、Java语言概述、主流开发工具、Java语言基础、流程控制、Java数组、字符串、面向对象编程基础、继承、封装和多态、抽象类与接口、Java的类中类、包装类、数字类、集合类、格式类、输入输出、...

Global site tag (gtag.js) - Google Analytics