Java – 是否可以将JMenuBar添加到JFrame的装饰窗口?

我想知道我是否可以将JMenuBar添加到JFrame或JRootPane的装饰窗口,或者是否包含内容窗格内的边框.我看到像Firefox或Photoshop这样的应用程序在装饰窗口中有他们的菜单栏.

这可能吗?我环顾了谷歌,但我还没有找到任何关于这种事情的结果.我希望Java有这种能力.

解决方法

不确定您要找的是什么,但您可以将JMenuBar添加到JFrame – JFrame.setJMenuBar().有关详细信息,请参阅 How to Use Menus教程.

编辑:

下面是一个过度简化的未装饰框架示例,带有菜单,只是为了演示这个想法.

您可能希望转向现有解决方案 – JIDE为此目的使用ResizableFrame.它是开源JIDE-oss的一部分.Substance L&F支持标题自定义(见What happened to the Substance LaF?).您还可以非常有效地利用@camickr的ComponentMover和ComponentResizer类,有关详细信息,请参阅Resizing Components文章.

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

public class UndecoratedFrameDemo {
    private static Point point = new Point();

    public static void main(String[] args) {
        final 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(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        menu.add(item);
        frame.setJMenuBar(menuBar);

        frame.setVisible(true);
    }
}

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...