根据业务需求自定义一个窗体Frame(带图标,标题,最小化,最大化,还原,关闭,背景色,宽,高,初始定位,窗体上面可拖拽移动窗体位置,可拖拽边框放大缩小窗体大小)

本文介绍如何在Java中创建一个自定义的窗体Frame,包含设置图标、标题、最小化、最大化、还原、关闭功能,以及设定背景色、宽度、高度、初始位置,并实现窗体的拖拽移动和边框拖拽缩放功能。
摘要由CSDN通过智能技术生成

效果图
在这里插入图片描述

代码

/**
 * 设置一个公共窗体面板
 * 要求:图标,标题,最小化,最大化,还原,关闭,背景色,宽,高,初始定位,窗体上面可拖拽移动窗体位置,可拖拽边框放大缩小窗体大小
 */
public class publicFrame extends JFrame implements MouseListener/*ActionListener*/ {
   
    private static final long serialVersionUID = 1L;
    Toolkit toolkit = Toolkit.getDefaultToolkit();//获取当前屏幕的工具包对象

    private int frameState=0;
    // 设置窗体位置
    private int Location_x = (int) (toolkit.getScreenSize().getWidth() - 500) / 2;
    private int Location_y = (int) (toolkit.getScreenSize().getHeight() - 500) / 2;

    static Point origin = new Point();//变量,用于可拖动窗体 相当于下面的mouseAtX,mouseAtY
//    int mouseAtX = 0;
//    int mouseAtY = 0;

    private JLabel jan, bi, da, title, theam, tip;//最小化,关闭,放大,标题,主题头像,提示
    private JPanel head, body;

    public publicFrame(String title_) {
   //这个参数也是标题
        this.setUndecorated(true);//去顶部  让窗体的标题栏不可见
        this.setLayout(new BorderLayout());
        head = new JPanel();
        body = new JPanel();
        head.setLayout(new headLayout());
        head.setPreferredSize(new Dimension(this.getWidth(), 36));
        //修改电脑任务栏中此窗口的图标
        Image image = new ImageIcon("loginicon.png").getImage();
        setIconImage(image);

        theam = new JLabel(new ImageIcon("src/素材/头像白3.png"));
        title = new JLabel(title_);
        tip = new JLabel(new ImageIcon("src/素材/提醒.png"));
        jan = new JLabel(new ImageIcon("src/素材/最小化.png"));
        da = new JLabel(new ImageIcon("src/素材/放大.png"));
        bi = new JLabel(new ImageIcon("src/素材/关闭.png"));

        title.setForeground(Color.WHITE);

        theam.addMouseListener(this);//这里的参数this就是MouseListener的实现方法
        title.addMouseListener(this);
        tip.addMouseListener(this);
        jan.addMouseListener(this);
        da.addMouseListener(this);
        bi.addMouseListener(this);
        head.addMouseListener(this);
        this.addMouseListener(this);
        /*
         *鼠标监听器
         */
        this.addMouseMotionListener(new MouseAdapter() {
   

            private boolean top = false;

            private boolean down = false;

            private boolean left = false;

            private boolean right = false;

            private boolean drag = false;

            private Point lastPoint = null;

            private Point draggingAnchor = null;

            @Override
            public void mouseMoved(MouseEvent e) {
   //监听鼠标移动
                System
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值