微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何在使用未装饰的JFrame时添加对调整大小的支持?

我想自定义我的标题栏,最小化,最大化和关闭按钮.所以我用setUndecorated(true);在我的JFrame上,但是我仍然希望能够调整窗口大小.什么是最好的实现方法

我在RootPane上有一个边框,我可以在Border或RootPane上使用MouseListener.任何建议?

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.border.LineBorder;

public class UndecoratedFrame extends JFrame {

    private LineBorder border = new LineBorder(Color.BLUE,2);
    private JMenuBar menuBar = new JMenuBar();
    private JMenu menu = new JMenu("File");
    private JMenuItem item = new JMenuItem("nothing");

    public UndecoratedFrame() {
        menu.add(item);
        menuBar.add(menu);
        this.setJMenuBar(menuBar);
        this.setUndecorated(true);
        this.getRootPane().setBorder(border);
        this.setSize(400,340);
        this.setVisible(true);
    }

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

解决方法

正如你所说,你的根窗格上有边框.因此,至少有一个位置(在您的边框绘图的下方),您的根窗格是最重要的组件.因此,您可以添加鼠标监听器和鼠标移动侦听器.

当您的根窗格被点击(并且按下鼠标按钮)时,您的鼠标和动作侦听器将通知您初始和实际的鼠标位置.因此,您可以更新两个值之间的偏移量的帧大小,使您的帧可调整大小.

原文地址:https://www.jb51.cc/java/121138.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐