popupmenutest.java

来自「Java程序设计技巧与开发实例附书源代码。」· Java 代码 · 共 78 行

JAVA
78
字号

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class PopupMenuTest
    extends JFrame
    implements ActionListener {
  private JPopupMenu file = new JPopupMenu();
  private JMenuItem fileOpen = new JMenuItem("Open");
  private JMenuItem fileSave = new JMenuItem("Save");
  private JMenuItem fileExit = new JMenuItem("Exit");
  private JPopupMenu options = new JPopupMenu();
  private JMenuItem optionsSpell = new JMenuItem("Spell Check");
  private JMenuItem optionsSecret = new JMenuItem("Show Codes");
  private class FilePopupListener
      extends MouseAdapter {
    private JComponent owner;
    public FilePopupListener(JComponent _owner) {
      owner = _owner;
    }

    public void mousePressed(MouseEvent me) {
      if (SwingUtilities.isRightMouseButton(me)) {
        PopupMenuTest.this.file.show(owner, me.getX(), me.getY());
      }
    }
  }

  private class OptionsPopupListener
      extends MouseAdapter {
    private JComponent owner;
    public OptionsPopupListener(JComponent _owner) {
      owner = _owner;
    }

    public void mousePressed(MouseEvent me) {
      if (SwingUtilities.isRightMouseButton(me)) {
        PopupMenuTest.this.options.show(owner, me.getX(), me.getY());
      }
    }
  }

  public PopupMenuTest() {
    super("Popup Menu Test");
    JPanel top = new JPanel(new FlowLayout());
    top.add(new JLabel("This is one particular panel"));
    top.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
    JPanel bottom = new JPanel(new FlowLayout());
    bottom.add(new JLabel("This is another panel"));
    bottom.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
    file.add(fileOpen);
    file.add(fileSave);
    file.add(new JPopupMenu.Separator());
    file.add(fileExit);
    fileExit.addActionListener(this);
    options.add(optionsSpell);
    options.add(optionsSecret);
    top.addMouseListener(new FilePopupListener(top));
    bottom.addMouseListener(new OptionsPopupListener(bottom));
    getContentPane().setLayout(new GridLayout(2, 1));
    getContentPane().add(top);
    getContentPane().add(bottom);
    validate();
    pack();
    setVisible(true);
  }

  public void actionPerformed(ActionEvent ae) {
    System.exit(0);
  }

  public static void main(String args[]) {
    PopupMenuTest pmt = new PopupMenuTest();
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?