qq项目第一天(java JFrame 标题栏 最小化 最大化 拖动窗体)

 

运行结果截图:

 

源码暂时不上传,有希望一起学习的 可以加qq群:151648295

 

今天本来不止做这么多的,后来遇到一点麻烦事!!

那就是怎么设置 标题栏,系统默认的标题栏很难看!

下面是具体思路:

在使用Jframe的时候,普遍都会有标题栏,还有最小化,最大化,关闭按纽的,还要实现拖动窗体的功能。
这样的话,对我们实现自定义样式的窗体是很有影响的,

1) 要去掉标题栏:
jFrame.setUndecorated(true);
// 这样就可以去掉Jframe中对window的装饰了,

2) 去掉标题栏,我们就有可能要给程序写代码提供最小化,最大化,关闭的操作,如何实现?
只要给按纽添加MouseListener,
在mouseClick中的调用

jFrame.setExtendedState(jFrame.ICONIFIED); //最小化

if(jFrame.getExtendedState() != jFrame.MAXIMIZED_BOTH)
jFrame.setExtendedState(jFrame.MAXIMIZED_BOTH);
else
jFrame.setExtendedState(jFrame.NORMAL);
// 最大化或正常状态

System.exit(0);
// 关闭,退出程序

3) 要拖动窗体的功能:
只要给窗体中的某个组件添加如下代码就行了:
 
Point loc = null;
    Point tmp = null;
    boolean isDragged = false;
    private void setDragable() {
        this.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent e) {
               isDragged = false;
               jFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
            }
            public void mousePressed(java.awt.event.MouseEvent e) {
               tmp = new Point(e.getX(), e.getY());
               isDragged = true;
               jFrame.setCursor(new Cursor(Cursor.MOVE_CURSOR));
            }
        });
        this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent e) {
               if(isDragged) {
                   loc = new Point(jFrame.getLocation().x + e.getX() - tmp.x,
                     jFrame.getLocation().y + e.getY() - tmp.y);
                   jFrame.setLocation(loc);
               }
            }
        });
 }
  在初始化该组件的时候调用 setDragable() 就可以使组件具体拖放窗体的功能了。因为可能有
背景图,可能会重写paint方法,不能在paint方法中调用setDragable()


源码下载:

                点此下载源码

 欢迎大家关注我的博客,有什么问题可以评论,也可以加入我的qq群:151648295  希望大家一起进步。

我的博客更新很快的哦,这次十月一假期我将给大家分享一个j2se的项目,“制作山寨版qq”,欢迎大家一起关注啊。

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值