菜单使用

来源:互联网 发布:域名服务器ip地址 编辑:程序博客网 时间:2024/05/21 04:41

1) 右键弹出式菜单

privateJPopupMenu popMenu=new JPopupMenu();

privateJMenuItem pop1,pop2,pop3;

 

//定义监听器

PopMenuActionListenerlistener=new PopMenuActionListener();

//建菜单项,并添加监听器

pop1=new JMenuItem("灰色");

pop1.addActionListener(listener);

pop2=new JMenuItem("青色");

pop2.addActionListener(listener);

pop3=new JMenuItem("黄色");

pop3.addActionListener(listener);

//将菜单项加入到右键快捷菜单

popMenu.add(pop1);

popMenu.add(pop2);

popMenu.add(pop3);

//此类继承自JFrame,加上弹出菜单

this.add(popMenu);

this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);

最后一句是让它能响应鼠标事件。

//响应鼠标事件

public voidprocessMouseEvent(MouseEvent e){

    if (e.isPopupTrigger())

       popMenu.show(e.getComponent(),e.getX(),e.getY());

}

监听器类就是实现ActionListener接口,判断事件源是那个,做对应动作。

class PopMenuActionListenerimplements ActionListener{

 

    public voidactionPerformed(ActionEvent e) {

       Object source=e.getSource();

       if(source==pop1){

           tf.setBackground(Color.GRAY);

       }else if(source==pop2){

           tf.setBackground(Color.CYAN);

       }else if(source==pop3){

           tf.setBackground(Color.YELLOW);

       }

      

    }

   

}

2)  菜单栏

JMenuBarbar=new JMenuBar();

JMenu menu2=new JMenu("字号");

final JCheckBoxMenuItem sz1=new JCheckBoxMenuItem("10"),

              sz2=new JCheckBoxMenuItem("15");

ItemListenermyMenuListener=new ItemListener(){

    int size=tf.getFont().getSize();

    public voiditemStateChanged(ItemEvent e) {

             

       ItemSelectableitem=e.getItemSelectable();

if(item==sz1){

           size=Integer.parseInt(sz1.getText());

           sz2.setSelected(false);

       }else if(item==sz2){

           size=Integer.parseInt(sz2.getText());

           sz1.setSelected(false);

       }

              tf.setFont(new Font(type,Font.PLAIN,size));

              tf.setForeground(color);

    }

};

sz1.addItemListener(myMenuListener);

sz2.addItemListener(myMenuListener);

menu2.add(sz1);

menu2.add(sz2);

bar.add(menu2);

this.setJMenuBar(bar);

总结一下,先定义菜单栏JMenuBar,然后定义菜单JMenu,然后定义菜单项,这里有多个选择,上面的是JCheckBoxMenuItem,这个和CheckBox一样可以多个同时选中,当然真实情况,字体大小是不适合用这个的。然后定义一个监听器,各菜单项添加监听器,菜单添加菜单项,菜单栏添加菜单。

3)  关于快捷键

JCheckBoxMenuItem类仍可以调用sz1.setMnemonic('A');来设置快捷键。这样当点击它所在菜单将它弹出后,按A(输入法是英文时)或Alt+A便可。

final JMenuItem fc3=new JMenuItem("蓝色",'B');

这个直接指定了快捷键,为它fc3.addActionListener(listener);同上,当点击它所在菜单将它弹出后,按B(输入法是英文时)或Alt+B便可。


0 0