Java Swing How to - Add a JMenuBar to a JFrame's decoration window








Question

We would like to know how to add a JMenuBar to a JFrame's decoration window.

Answer

import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
/*from www.jav a  2s. c  o m*/
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Main {
  static Point point = new Point();

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setUndecorated(true);
    frame.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        point.x = e.getX();
        point.y = e.getY();
      }
    });
    frame.addMouseMotionListener(new MouseMotionAdapter() {
      public void mouseDragged(MouseEvent e) {
        Point p = frame.getLocation();
        frame.setLocation(p.x + e.getX() - point.x, p.y + e.getY() - point.y);
      }
    });

    frame.setSize(300, 300);
    frame.setLocation(200, 200);
    frame.setLayout(new BorderLayout());

    frame.getContentPane().add(new JLabel("Drag to move", JLabel.CENTER),
        BorderLayout.CENTER);

    JMenuBar menuBar = new JMenuBar();
    JMenu menu = new JMenu("Menu");
    menuBar.add(menu);
    JMenuItem item = new JMenuItem("Exit");
    item.addActionListener(e -> System.exit(0));
    menu.add(item);
    frame.setJMenuBar(menuBar);
    frame.setVisible(true);
  }
}