Java中的快捷键和右键属性添加实现
2013-02-13 01:10
375 查看
在做这个实验之前,先理顺一下这三者之间的关系:JMenuBar,JMenu,JMenuItem的关系
在一个窗口中,我们经常需要给窗口添加菜单条。在 Java 中这一部分是由三个类实现的,它们是JMenuBar、JMenu和JMenuItem,分别对应菜单条、菜单和菜单项。
同时,可以给JMenuItem注册侦听器,但不能对JMenuBar,JMenu注册侦听器.
.tH1~ o~}1J!Q1N0
一、菜单条(JMenuBar)
JMenuBar 的构造方法是 JMenuBar(),相当简单。在构造之后,还要将它设置成窗口的菜单条,这里要用 setJMenuBar 方法:
JMenuBar TestJMenuBar=new JMenuBar();
TestFrame.setJMenuBar(TestJMenuBar);
需要说明的是,JMenuBar 类根据 JMenu 添加的顺序从左到右显示,并建立整数索引。
二、菜单(JMenu)
在添加完菜单条后,并不会显示任何菜单,所以还需要在菜单条中添加菜单。菜单 JMenu 类的构造方法有4种:
JMenu() 构造一个空菜单。
JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。
JMenu(String s) 用给定的标志构造一个菜单。
JMenu(String s,Boolean b) 用给定的标志构造一个菜单。如果布尔值为false,那么当释放鼠标按钮后,菜单项会消失;如果布尔值为true,那么当释放鼠标按钮后,菜单项仍将显示。这时的菜单称为 tearOff 菜单。
在构造完后,使用 JMenuBar 类的 add 方法添加到菜单条中。
三、菜单项(JmenuItem)
接下来的工作是往菜单中添加内容。 在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。
在构造完后,使用 JMenu 类的 add 方法添加到菜单中。
子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。
代码实现如下;
import java.awt.Color;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.PopupMenu;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JTextArea;
class ColorMenu extends JFrame implements ActionListener {
//定义菜单条
MenuBar MenuBar1;
//往菜单条上添加菜单
Menu Menu1;
//往菜单上添加菜单选项
MenuItem item1,item2,item3,item4,item5,item6,item7,item8;
//定义文本框
JTextArea ta;
//只要有菜单的地方都可以使用PopMenu.相当于是弹出菜单
PopupMenu popupMenu1;
public ColorMenu(){
//定义了菜单条,往菜单条上添加了菜单
MenuBar1=new MenuBar();
Menu1=new Menu("这儿定义了菜单");
setMenuBar(MenuBar1);
MenuBar1.add(Menu1);
//Ctrl+1.2.3.4代表的都是快捷键
//item1.2.3.4代表的是菜单选项
MenuShortcut shortcut1=new MenuShortcut(KeyEvent.VK_1);
item1=new MenuItem("红色",shortcut1);
MenuShortcut shortcut2=new MenuShortcut(KeyEvent.VK_2);
item2=new MenuItem("绿色",shortcut2);
MenuShortcut shortcut3=new MenuShortcut(KeyEvent.VK_3);
item3=new MenuItem("蓝色",shortcut3);
MenuShortcut shortcut4=new MenuShortcut(KeyEvent.VK_4);
item4=new MenuItem("退出",shortcut4);
//往菜单上添加菜单选项
Menu1.add(item1);
Menu1.add(item2);
Menu1.add(item3);
Menu1.addSeparator();//把分割线或者字符添加到此处
Menu1.add(item4);
//添加动作监听器,此菜单接受动作事件
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
item4.addActionListener(this);
item5=new MenuItem("右键:红色");
item6=new MenuItem("右键:绿色");
item7=new MenuItem("右键:蓝色");
item8=new MenuItem("右键:退出");
//添加文本框
ta=new JTextArea();
add(ta);
//对文本框添加右键弹出框
popupMenu1=new PopupMenu();
ta.add(popupMenu1);
//文本框添加监听事件
ta.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getModifiers()==MouseEvent.BUTTON3_MASK){
popupMenu1.show(ta, e.getX(), e.getY());
}
}
});
//对于右键弹出菜单添加菜单选项
popupMenu1.add(item5);
popupMenu1.add(item6);
popupMenu1.add(item7);
popupMenu1.addSeparator();
popupMenu1.add(item8);
//对于右键弹出菜单中的菜单选项添加事件监听
item5.addActionListener(this);
item6.addActionListener(this);
item7.addActionListener(this);
item8.addActionListener(this);
setSize(230,200);
setTitle("色彩与菜单");
setVisible(true);
//因为是抽象类,所以不能用new 实例化,可以用getDefaultToolkit返回Toolkit类的对象
double scr_width=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
double scr_height=Toolkit.getDefaultToolkit().getScreenSize().getHeight();
double x1=(scr_width-getWidth())/2;
double y1=(scr_height-getHeight())/2;
int x=new Double(x1).intValue();
int y=new Double(y1).intValue();
setLocation(x, y);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/**
* 因为对于各个菜单选项都定义了事件监听。所以this,单点击的时候,会自动的调用这个函数
*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==item1){
ta.setBackground(Color.red);
}
if(e.getSource()==item2){
ta.setBackground(Color.green);
}
if(e.getSource()==item3){
ta.setBackground(Color.blue);
}
if(e.getSource()==item4){
System.exit(0);
}
if(e.getSource()==item5){
ta.setBackground(Color.PINK);
}
if(e.getSource()==item6){
ta.setBackground(Color.gray);
}
if(e.getSource()==item7){
ta.setBackground(Color.black);
}
if(e.getSource()==item8){
System.exit(0);
}
}
}
public class Kuaijie {
public static void main(String args[]){
new ColorMenu();
}
}
相关文章推荐
- Android 动态添加Spinner(.java文件内实现) 实现 改变spinner 内文字属性
- java实现table添加右键点击事件监听操作示例
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- 自定义右键属性覆盖浏览器默认右键行为实现代码
- 通过list实现allegro第三方网表交互布局并添加room属性
- iOS runtime机制实现给分类添加属性
- AndroidStudio 自定义代码模板实现在xml和java文件中添加作者信息
- java的鼠标右键实现
- JavaScript DOM中实现循环创建文办节点并添加属性节点
- 梅花雪树型控件添加checkbox、radio控件及右键属性,提供下载。
- 用于创建实现 System.ComponentModel.INotifyPropertyChanged 接口的动态类型,并添加各个 public 属性的定义
- 如何实现在已有代码之后添加逻辑之java动态代理
- Android UI 之使用java代码实现动态添加LinearLayout(一)
- jsp+Javabean+servlet实现添加删除
- 遍历json 对象的属性并且动态添加属性的实现
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- java操作Excel之POI(6)使用POI实现使用模板批量添加数据
- Java 记事本——今天添加了简单的插入时间和自动换行菜单的实现
- category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
- 学生管理系统,用Java代码连接数据实现数据的添加、更新、删除操作