您的位置:首页 > 编程语言 > Java开发

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐