文章目录

  • 1.. Java弹出菜单,为JTextArea添加了右键弹出式菜单
  • 2.:下拉式菜单的创建步骤:
  • 3:弹出式菜单的创建步骤:
  • 4:选项卡窗体:


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

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

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

1… Java弹出菜单,为JTextArea添加了右键弹出式菜单

参考:

Java鼠标右键弹出菜单,该例子为JTextArea添加了右键弹出式菜单,实现了复制、粘贴以及剪切功能。

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.UIManager;

 

public class Test extends JFrame {

 private static final long serialVersionUID = -5942087991012920147L;

 private JScrollPane pane = null;

 private TextAreaMenu text = null;

 public Test() {
  super("右键菜单");
  try { // 使用Windows的界面风格
   UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  } catch (Exception e) {
   e.printStackTrace();
  }
  text = new TextAreaMenu();
  pane = new JScrollPane(text);
  this.getContentPane().add(pane);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setSize(300, 200);
  this.setVisible(true);
 }

 public static void main(String args[]) {
  new Test();
 }

 
 class TextAreaMenu extends JTextArea implements MouseListener {

  private static final long serialVersionUID = -2308615404205560110L;

  private JPopupMenu pop = null; // 弹出菜单

  private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单

  public TextAreaMenu() {
   super();
   init();
  }

  private void init() {
   this.addMouseListener(this);
   pop = new JPopupMenu();
   pop.add(copy = new JMenuItem("复制"));
   pop.add(paste = new JMenuItem("粘贴"));
   pop.add(cut = new JMenuItem("剪切"));
   copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
   paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
   cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
   copy.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     action(e);
    }
   });
   paste.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     action(e);
    }
   });
   cut.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     action(e);
    }
   });
   this.add(pop);
  }

  
  public void action(ActionEvent e) {
   String str = e.getActionCommand();
   if (str.equals(copy.getText())) { // 复制
    this.copy();
   } else if (str.equals(paste.getText())) { // 粘贴
    this.paste();
   } else if (str.equals(cut.getText())) { // 剪切
    this.cut();
   }
  }

  public JPopupMenu getPop() {
   return pop;
  }

  public void setPop(JPopupMenu pop) {
   this.pop = pop;
  }

  
  public boolean isClipboardString() {
   boolean b = false;
   Clipboard clipboard = this.getToolkit().getSystemClipboard();
   Transferable content = clipboard.getContents(this);
   try {
    if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
     b = true;
    }
   } catch (Exception e) {
   }
   return b;
  }

  
  public boolean isCanCopy() {
   boolean b = false;
   int start = this.getSelectionStart();
   int end = this.getSelectionEnd();
   if (start != end)
    b = true;
   return b;
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
   if (e.getButton() == MouseEvent.BUTTON3) {
    copy.setEnabled(isCanCopy());
    paste.setEnabled(isClipboardString());
    cut.setEnabled(isCanCopy());
    pop.show(this, e.getX(), e.getY());
   }
  }

  public void mouseReleased(MouseEvent e) {
  }

 }

}

2.:下拉式菜单的创建步骤:

1.创建一个菜单栏。

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

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

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

java中获取子菜单 java选择菜单_java中获取子菜单

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

  }  

}

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

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

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

java中获取子菜单 java选择菜单_菜单栏_02

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

    }  

}

4:选项卡窗体:

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); //将选项卡窗体添加到主窗体上去

java中获取子菜单 java选择菜单_java中获取子菜单_03

import java.awt.*;  

import javax.swing.*;  

  

/** 

 * <p>Title: 选项卡演示</p> 

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

 */  

  

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

    }  

  

    /** 

     * <br> 

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

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

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

    }  

  

    /** 

     * <br> 

     * 方法说明:获得图片 <br> 

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

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

    }  

}